From 02d93f7abbd555d93eae94c670fa0aba95758f00 Mon Sep 17 00:00:00 2001 From: barsolo2000 Date: Mon, 3 Nov 2025 17:22:35 -0800 Subject: [PATCH 01/11] [RISCV] Adding `vlenb` register as callee register (#165796) In recent debug sessions we noticed that GDB debugger is showing more stack trace than lldb. After enabling unwinding log, it seems like the issue is that the CFA is dependent on the value of vlenb. vlenb doesn't change in runtime so we can assume its value from frame 0. Co-authored-by: Bar Soloveychik --- lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp b/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp index ff37b48d86ca8..a5547a4699ca9 100644 --- a/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp +++ b/lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp @@ -798,6 +798,8 @@ bool ABISysV_riscv::RegisterIsCalleeSaved(const RegisterInfo *reg_info) { .Cases({"f8", "f9", "f18", "f19", "f20", "f21", "f22", "f23"}, is_hw_fp) .Cases({"f24", "f25", "f26", "f27"}, is_hw_fp) + // vlenb is constant and needed for vector unwinding. + .Case("vlenb", true) .Default(false); return is_callee_saved; From a22d1c2225543aa9ae7882f6b1a97ee7b2c95574 Mon Sep 17 00:00:00 2001 From: Aiden Grossman Date: Tue, 4 Nov 2025 01:31:18 +0000 Subject: [PATCH 02/11] Revert "[Polly] Introduce PhaseManager and remove LPM support (#125442)" This reverts commit e987ab11a6f3d3965ef26fc42c82db3e8b1d56f5. This broke premerge: 1. https://lab.llvm.org/staging/#/builders/192/builds/9521 2. https://github.com/llvm/llvm-project/actions/runs/19054182009 Notably this did not break inside the PR. Not exactly sure why. I realize that there is a lot of test churn here, but they're largely in polly where commit frequency is much lower, so a reapply of the patch should be clean. --- polly/docs/ReleaseNotes.rst | 4 - polly/include/polly/Canonicalization.h | 8 + polly/include/polly/CodeGen/CodeGeneration.h | 3 - polly/include/polly/CodeGen/IslAst.h | 36 +- polly/include/polly/CodePreparation.h | 6 - polly/include/polly/DeLICM.h | 11 +- polly/include/polly/DeadCodeElimination.h | 13 +- polly/include/polly/DependenceInfo.h | 106 ++++- polly/include/polly/FlattenSchedule.h | 16 +- polly/include/polly/ForwardOpTree.h | 20 +- polly/include/polly/JSONExporter.h | 13 +- polly/include/polly/LinkAllPasses.h | 156 +++++++ polly/include/polly/MaximalStaticExpansion.h | 2 - polly/include/polly/Pass/PhaseManager.h | 127 ------ polly/include/polly/Pass/PollyFunctionPass.h | 32 -- polly/include/polly/Pass/PollyModulePass.h | 30 -- polly/include/polly/PruneUnprofitable.h | 12 +- polly/include/polly/RegisterPasses.h | 2 + polly/include/polly/ScheduleOptimizer.h | 16 +- polly/include/polly/ScopDetection.h | 27 ++ polly/include/polly/ScopGraphPrinter.h | 3 - polly/include/polly/ScopInfo.h | 76 ++++ polly/include/polly/ScopInliner.h | 6 + polly/include/polly/ScopPass.h | 28 ++ polly/include/polly/Simplify.h | 23 +- .../include/polly/Support/DumpFunctionPass.h | 12 + polly/include/polly/Support/DumpModulePass.h | 15 +- polly/include/polly/Support/ScopHelper.h | 8 + polly/lib/Analysis/DependenceInfo.cpp | 220 ++++++++- polly/lib/Analysis/PruneUnprofitable.cpp | 32 +- polly/lib/Analysis/ScopBuilder.cpp | 1 - polly/lib/Analysis/ScopDetection.cpp | 107 +++++ polly/lib/Analysis/ScopGraphPrinter.cpp | 120 ++++- polly/lib/Analysis/ScopInfo.cpp | 228 ++++++++++ polly/lib/Analysis/ScopPass.cpp | 36 ++ polly/lib/CMakeLists.txt | 3 - polly/lib/CodeGen/CodeGeneration.cpp | 72 ++- polly/lib/CodeGen/IslAst.cpp | 101 ++++- polly/lib/Exchange/JSONExporter.cpp | 160 ++++++- polly/lib/Pass/PhaseManager.cpp | 424 ------------------ polly/lib/Pass/PollyFunctionPass.cpp | 22 - polly/lib/Pass/PollyModulePass.cpp | 29 -- polly/lib/Support/DumpFunctionPass.cpp | 41 ++ polly/lib/Support/DumpModulePass.cpp | 47 ++ polly/lib/Support/PollyPasses.def | 25 +- polly/lib/Support/RegisterPasses.cpp | 401 ++++++----------- polly/lib/Support/ScopHelper.cpp | 12 + polly/lib/Transform/Canonicalization.cpp | 65 +++ polly/lib/Transform/CodePreparation.cpp | 69 +++ polly/lib/Transform/DeLICM.cpp | 125 ++++-- polly/lib/Transform/DeadCodeElimination.cpp | 44 +- polly/lib/Transform/FlattenSchedule.cpp | 139 ++++-- polly/lib/Transform/ForwardOpTree.cpp | 131 ++++-- .../lib/Transform/MaximalStaticExpansion.cpp | 81 +++- polly/lib/Transform/ScheduleOptimizer.cpp | 152 ++++++- polly/lib/Transform/ScopInliner.cpp | 46 ++ polly/lib/Transform/Simplify.cpp | 101 ++++- polly/test/CodeGen/20100617.ll | 2 +- polly/test/CodeGen/20100622.ll | 4 +- polly/test/CodeGen/20100707.ll | 2 +- polly/test/CodeGen/20100707_2.ll | 2 +- polly/test/CodeGen/20100708.ll | 2 +- polly/test/CodeGen/20100708_2.ll | 2 +- polly/test/CodeGen/20100713.ll | 2 +- polly/test/CodeGen/20100713_2.ll | 2 +- polly/test/CodeGen/20100717.ll | 2 +- polly/test/CodeGen/20100718-DomInfo-2.ll | 2 +- polly/test/CodeGen/20100718-DomInfo.ll | 2 +- .../CodeGen/20100720-MultipleConditions.ll | 2 +- .../test/CodeGen/20100809-IndependentBlock.ll | 2 +- ...0100811-ScalarDependencyBetweenBrAndCnd.ll | 2 +- polly/test/CodeGen/20101030-Overflow.ll | 2 +- polly/test/CodeGen/20101103-Overflow3.ll | 2 +- polly/test/CodeGen/20101103-signmissmatch.ll | 2 +- .../test/CodeGen/20110226-Ignore-Dead-Code.ll | 2 +- .../test/CodeGen/20110226-PHI-Node-removed.ll | 2 +- polly/test/CodeGen/20120316-InvalidCast.ll | 2 +- .../CodeGen/20120403-RHS-type-mismatch.ll | 2 +- polly/test/CodeGen/20130221.ll | 2 +- .../20150328-SCEVExpanderIntroducesNewIV.ll | 2 +- polly/test/CodeGen/Intrinsics/llvm-expect.ll | 2 +- .../do_not_mutate_debug_info.ll | 2 +- .../loop_nest_param_parallel.ll | 2 +- .../single_loop_param_parallel.ll | 4 +- polly/test/CodeGen/MemAccess/bad_alignment.ll | 2 +- .../MemAccess/codegen_address_space.ll | 2 +- .../MemAccess/codegen_constant_offset.ll | 2 +- .../test/CodeGen/MemAccess/codegen_simple.ll | 2 +- .../CodeGen/MemAccess/codegen_simple_float.ll | 2 +- .../CodeGen/MemAccess/codegen_simple_md.ll | 4 +- .../MemAccess/codegen_simple_md_float.ll | 4 +- polly/test/CodeGen/MemAccess/create_arrays.ll | 4 +- .../CodeGen/MemAccess/create_arrays_heap.ll | 4 +- .../default_aligned_new_access_function.ll | 2 +- .../test/CodeGen/MemAccess/different_types.ll | 4 +- polly/test/CodeGen/MemAccess/generate-all.ll | 6 +- .../CodeGen/MemAccess/invariant_base_ptr.ll | 4 +- .../CodeGen/MemAccess/map_scalar_access.ll | 4 +- .../test/CodeGen/MemAccess/multiple_types.ll | 4 +- polly/test/CodeGen/MemAccess/simple.ll | 2 +- .../test/CodeGen/MemAccess/simple_analyze.ll | 2 +- .../MemAccess/update_access_functions.ll | 4 +- .../CodeGen/Metadata/basic_vec_annotate.ll | 2 +- polly/test/CodeGen/OpenMP/alias-metadata.ll | 2 +- .../floord-as-argument-to-subfunction.ll | 2 +- polly/test/CodeGen/OpenMP/inlineasm.ll | 2 +- .../invariant_base_pointer_preloaded.ll | 3 +- ...ant_base_pointer_preloaded_different_bb.ll | 3 +- ...base_pointer_preloaded_pass_only_needed.ll | 3 +- .../invariant_base_pointers_preloaded.ll | 3 +- .../OpenMP/loop-body-references-outer-iv.ll | 4 +- .../loop-body-references-outer-values-2.ll | 4 +- .../loop-body-references-outer-values-3.ll | 4 +- .../loop-body-references-outer-values.ll | 4 +- .../OpenMP/loop-bounds-reference-outer-ids.ll | 4 +- .../test/CodeGen/OpenMP/mapped-phi-access.ll | 2 +- polly/test/CodeGen/OpenMP/matmul-parallel.ll | 4 +- .../CodeGen/OpenMP/new_multidim_access.ll | 8 +- polly/test/CodeGen/OpenMP/recomputed-srem.ll | 3 +- ...ference-argument-from-non-affine-region.ll | 19 +- .../test/CodeGen/OpenMP/reference-other-bb.ll | 2 +- .../OpenMP/reference-preceeding-loop.ll | 4 +- polly/test/CodeGen/OpenMP/reference_latest.ll | 2 +- polly/test/CodeGen/OpenMP/scev-rewriting.ll | 2 +- polly/test/CodeGen/OpenMP/single_loop.ll | 18 +- ...single_loop_with_loop_invariant_baseptr.ll | 4 +- .../CodeGen/OpenMP/single_loop_with_param.ll | 16 +- ...o-parallel-loops-reference-outer-indvar.ll | 4 +- polly/test/CodeGen/PHIInExit.ll | 2 +- .../combine_different_values.ll | 4 +- .../RuntimeDebugBuilder/stmt_tracing.ll | 2 +- polly/test/CodeGen/alias-check-multi-dim.ll | 3 +- .../CodeGen/alias_metadata_too_many_arrays.ll | 3 +- ...aliasing_different_base_and_access_type.ll | 2 +- .../aliasing_different_pointer_types.ll | 2 +- .../aliasing_multidimensional_access.ll | 2 +- .../CodeGen/aliasing_parametric_simple_1.ll | 2 +- .../CodeGen/aliasing_parametric_simple_2.ll | 2 +- polly/test/CodeGen/aliasing_struct_element.ll | 2 +- polly/test/CodeGen/alignment.ll | 2 +- polly/test/CodeGen/annotated_alias_scopes.ll | 2 +- polly/test/CodeGen/blas_sscal_simplified.ll | 2 +- ...code-hosting-and-escape-map-computation.ll | 2 +- polly/test/CodeGen/constant_condition.ll | 2 +- polly/test/CodeGen/create-conditional-scop.ll | 2 +- ...d_instruction_referenced_by_parameter_1.ll | 2 +- ...d_instruction_referenced_by_parameter_2.ll | 2 +- polly/test/CodeGen/debug-intrinsics.ll | 8 +- ...nce_problem_after_early_codegen_bailout.ll | 2 +- polly/test/CodeGen/empty_domain_in_context.ll | 2 +- polly/test/CodeGen/entry_with_trivial_phi.ll | 2 +- .../entry_with_trivial_phi_other_bb.ll | 2 +- .../error-stmt-in-non-affine-region.ll | 2 +- ...or_block_contains_invalid_memory_access.ll | 2 +- polly/test/CodeGen/exprModDiv.ll | 7 +- .../hoisted_load_escapes_through_phi.ll | 6 +- polly/test/CodeGen/hoisting_1.ll | 2 +- polly/test/CodeGen/hoisting_2.ll | 2 +- polly/test/CodeGen/inner_scev_sdiv_1.ll | 2 +- polly/test/CodeGen/inner_scev_sdiv_2.ll | 2 +- polly/test/CodeGen/inner_scev_sdiv_3.ll | 2 +- polly/test/CodeGen/inner_scev_sdiv_in_lb.ll | 4 +- .../inner_scev_sdiv_in_lb_invariant.ll | 3 +- polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll | 3 +- polly/test/CodeGen/intrinsics_lifetime.ll | 2 +- polly/test/CodeGen/intrinsics_misc.ll | 2 +- .../inv-load-lnt-crash-wrong-order-2.ll | 3 +- .../inv-load-lnt-crash-wrong-order-3.ll | 3 +- .../CodeGen/inv-load-lnt-crash-wrong-order.ll | 3 +- .../test/CodeGen/invariant-load-dimension.ll | 4 +- ...-load-preload-base-pointer-origin-first.ll | 2 +- .../CodeGen/invariant_cannot_handle_void.ll | 4 +- polly/test/CodeGen/invariant_load.ll | 2 +- .../CodeGen/invariant_load_address_space.ll | 2 +- .../CodeGen/invariant_load_alias_metadata.ll | 3 +- .../CodeGen/invariant_load_base_pointer.ll | 2 +- ...invariant_load_base_pointer_conditional.ll | 2 +- ...variant_load_base_pointer_conditional_2.ll | 6 +- ...ariant_load_canonicalize_array_baseptrs.ll | 4 +- .../test/CodeGen/invariant_load_condition.ll | 2 +- .../invariant_load_different_sized_types.ll | 3 +- polly/test/CodeGen/invariant_load_escaping.ll | 2 +- .../invariant_load_escaping_second_scop.ll | 2 +- .../invariant_load_in_non_affine_subregion.ll | 2 +- polly/test/CodeGen/invariant_load_loop_ub.ll | 2 +- ...ant_load_not_executed_but_in_parameters.ll | 2 +- .../test/CodeGen/invariant_load_outermost.ll | 2 +- ...riant_load_parameters_cyclic_dependence.ll | 4 +- .../CodeGen/invariant_load_ptr_ptr_noalias.ll | 2 +- .../test/CodeGen/invariant_load_scalar_dep.ll | 2 +- ...riant_load_scalar_escape_alloca_sharing.ll | 2 +- ...oads_from_struct_with_different_types_1.ll | 2 +- ...oads_from_struct_with_different_types_2.ll | 2 +- ...invariant_loads_ignore_parameter_bounds.ll | 3 +- .../invariant_verify_function_failed.ll | 2 +- .../invariant_verify_function_failed_2.ll | 4 +- polly/test/CodeGen/issue56692.ll | 2 +- .../large-numbers-in-boundary-context.ll | 2 +- .../test/CodeGen/load_subset_with_context.ll | 2 +- .../loop-invariant-load-type-mismatch.ll | 2 +- polly/test/CodeGen/loop_with_condition.ll | 2 +- polly/test/CodeGen/loop_with_condition_2.ll | 2 +- .../test/CodeGen/loop_with_condition_ineq.ll | 2 +- .../CodeGen/loop_with_condition_nested.ll | 4 +- ..._conditional_entry_edge_split_hard_case.ll | 2 +- polly/test/CodeGen/memcpy_annotations.ll | 2 +- .../multidim-non-matching-typesize-2.ll | 3 +- .../CodeGen/multidim-non-matching-typesize.ll | 3 +- ..._2d_parametric_array_static_loop_bounds.ll | 2 +- polly/test/CodeGen/multidim_alias_check.ll | 2 +- polly/test/CodeGen/multiple-codegens.ll | 4 +- polly/test/CodeGen/multiple-scops-in-a-row.ll | 2 +- .../multiple-types-invariant-load-2.ll | 3 +- .../CodeGen/multiple-types-invariant-load.ll | 3 +- .../multiple_sai_fro_same_base_address.ll | 4 +- polly/test/CodeGen/no-overflow-tracking.ll | 4 +- polly/test/CodeGen/no_guard_bb.ll | 2 +- ...non-affine-dominance-generated-entering.ll | 2 +- .../CodeGen/non-affine-exit-node-dominance.ll | 2 +- .../non-affine-phi-node-expansion-2.ll | 3 +- .../non-affine-phi-node-expansion-3.ll | 3 +- .../non-affine-phi-node-expansion-4.ll | 3 +- .../CodeGen/non-affine-phi-node-expansion.ll | 3 +- ...e-region-exit-phi-incoming-synthesize-2.ll | 2 +- ...ine-region-exit-phi-incoming-synthesize.ll | 2 +- .../non-affine-region-implicit-store.ll | 2 +- ...ine-region-phi-references-in-scop-value.ll | 3 +- .../non-affine-subregion-dominance-reuse.ll | 3 +- polly/test/CodeGen/non-affine-switch.ll | 3 +- .../non-affine-synthesized-in-branch.ll | 2 +- polly/test/CodeGen/non-affine-update.ll | 3 +- .../non-hoisted-load-needed-as-base-ptr.ll | 2 +- .../test/CodeGen/non_affine_float_compare.ll | 4 +- .../CodeGen/only_non_affine_error_region.ll | 2 +- polly/test/CodeGen/openmp_limit_threads.ll | 12 +- .../test/CodeGen/out-of-scop-phi-node-use.ll | 2 +- polly/test/CodeGen/param_div_div_div_2.ll | 4 +- polly/test/CodeGen/partial_write_array.ll | 2 +- polly/test/CodeGen/partial_write_emptyset.ll | 2 +- ...l_write_full_write_that_appears_partial.ll | 2 +- .../partial_write_impossible_restriction.ll | 2 +- polly/test/CodeGen/partial_write_in_region.ll | 5 +- .../partial_write_in_region_with_loop.ll | 5 +- .../CodeGen/partial_write_mapped_scalar.ll | 2 +- .../partial_write_mapped_scalar_subregion.ll | 2 +- polly/test/CodeGen/perf_monitoring.ll | 3 +- .../perf_monitoring_cycles_per_scop.ll | 3 +- .../perf_monitoring_trip_counts_per_scop.ll | 3 +- polly/test/CodeGen/phi-defined-before-scop.ll | 2 +- .../phi_after_error_block_outside_of_scop.ll | 2 +- .../test/CodeGen/phi_condition_modeling_1.ll | 2 +- .../test/CodeGen/phi_condition_modeling_2.ll | 2 +- .../test/CodeGen/phi_conditional_simple_1.ll | 4 +- .../phi_in_exit_early_lnt_failure_1.ll | 2 +- .../phi_in_exit_early_lnt_failure_2.ll | 2 +- .../phi_in_exit_early_lnt_failure_3.ll | 2 +- .../phi_in_exit_early_lnt_failure_5.ll | 2 +- polly/test/CodeGen/phi_loop_carried_float.ll | 2 +- .../CodeGen/phi_loop_carried_float_escape.ll | 6 +- polly/test/CodeGen/phi_scalar_simple_1.ll | 2 +- polly/test/CodeGen/phi_scalar_simple_2.ll | 2 +- .../CodeGen/phi_with_multi_exiting_edges_2.ll | 2 +- polly/test/CodeGen/phi_with_one_exit_edge.ll | 2 +- .../CodeGen/pointer-type-expressions-2.ll | 4 +- .../test/CodeGen/pointer-type-expressions.ll | 4 +- .../pointer-type-pointer-type-comparison.ll | 4 +- polly/test/CodeGen/pointer_rem.ll | 4 +- polly/test/CodeGen/pr25241.ll | 2 +- polly/test/CodeGen/ptrtoint_as_parameter.ll | 2 +- polly/test/CodeGen/read-only-scalars.ll | 8 +- polly/test/CodeGen/reduction.ll | 2 +- polly/test/CodeGen/reduction_2.ll | 2 +- polly/test/CodeGen/reduction_simple_binary.ll | 2 +- polly/test/CodeGen/reggen_domtree_crash.ll | 2 +- .../test/CodeGen/region-with-instructions.ll | 2 +- polly/test/CodeGen/region_exiting-domtree.ll | 2 +- .../CodeGen/region_multiexit_partialwrite.ll | 2 +- ...run-time-condition-with-scev-parameters.ll | 4 +- polly/test/CodeGen/run-time-condition.ll | 2 +- .../scalar-references-used-in-scop-compute.ll | 2 +- .../test/CodeGen/scalar-store-from-same-bb.ll | 3 +- polly/test/CodeGen/scalar_codegen_crash.ll | 3 +- polly/test/CodeGen/scev-backedgetaken.ll | 2 +- .../CodeGen/scev-division-invariant-load.ll | 2 +- polly/test/CodeGen/scev.ll | 2 +- .../CodeGen/scev_expansion_in_nonaffine.ll | 3 +- .../CodeGen/scev_looking_through_bitcasts.ll | 2 +- .../CodeGen/scop_expander_insert_point.ll | 3 +- polly/test/CodeGen/scop_expander_segfault.ll | 2 +- ...p_never_executed_runtime_check_location.ll | 2 +- polly/test/CodeGen/select-base-pointer.ll | 2 +- polly/test/CodeGen/sequential_loops.ll | 2 +- .../CodeGen/simple_loop_non_single_exit.ll | 2 +- .../CodeGen/simple_loop_non_single_exit_2.ll | 2 +- polly/test/CodeGen/simple_non_single_entry.ll | 2 +- polly/test/CodeGen/simple_nonaffine_loop.ll | 2 +- .../single_do_loop_int_max_iterations.ll | 2 +- .../single_do_loop_int_param_iterations.ll | 2 +- .../single_do_loop_ll_max_iterations.ll | 4 +- .../CodeGen/single_do_loop_one_iteration.ll | 2 +- .../CodeGen/single_do_loop_scev_replace.ll | 2 +- polly/test/CodeGen/single_loop.ll | 2 +- .../CodeGen/single_loop_int_max_iterations.ll | 2 +- .../CodeGen/single_loop_ll_max_iterations.ll | 2 +- .../test/CodeGen/single_loop_one_iteration.ll | 2 +- polly/test/CodeGen/single_loop_param.ll | 2 +- .../CodeGen/single_loop_param_less_equal.ll | 6 +- .../CodeGen/single_loop_param_less_than.ll | 4 +- .../CodeGen/single_loop_zero_iterations.ll | 2 +- polly/test/CodeGen/split_edge_of_exit.ll | 4 +- polly/test/CodeGen/split_edges.ll | 2 +- polly/test/CodeGen/split_edges_2.ll | 2 +- polly/test/CodeGen/srem-in-other-bb.ll | 3 +- .../stack-overflow-in-load-hoisting.ll | 3 +- .../test/CodeGen/stmt_split_no_dependence.ll | 2 +- .../CodeGen/switch-in-non-affine-region.ll | 3 +- .../synthesizable_phi_write_after_loop.ll | 2 +- .../test-invalid-operands-for-select-2.ll | 2 +- .../test-invalid-operands-for-select.ll | 2 +- polly/test/CodeGen/test.ll | 2 +- .../two-loops-right-after-each-other-2.ll | 2 +- .../two-scops-in-row-invalidate-scevs.ll | 2 +- polly/test/CodeGen/two-scops-in-row.ll | 4 +- polly/test/CodeGen/udiv_expansion_position.ll | 2 +- .../CodeGen/uninitialized_scalar_memory.ll | 2 +- .../unpredictable-loop-unsynthesizable.ll | 6 +- .../test/CodeGen/variant_load_empty_domain.ll | 2 +- .../whole-scop-non-affine-subregion.ll | 3 +- polly/test/DeLICM/confused_order.ll | 4 +- ...ontradicting_assumed_context_and_domain.ll | 2 +- polly/test/DeLICM/load-in-cond-inf-loop.ll | 2 +- polly/test/DeLICM/map_memset_zero.ll | 4 +- polly/test/DeLICM/nomap_alreadymapped.ll | 2 +- polly/test/DeLICM/nomap_escaping.ll | 2 +- polly/test/DeLICM/nomap_occupied.ll | 2 +- polly/test/DeLICM/nomap_readonly.ll | 2 +- polly/test/DeLICM/nomap_spuriouswrite.ll | 2 +- polly/test/DeLICM/nomap_storagesize.ll | 2 +- polly/test/DeLICM/nomap_writewrite.ll | 2 +- polly/test/DeLICM/outofquota-reverseDomain.ll | 2 +- polly/test/DeLICM/pass_existence.ll | 6 +- polly/test/DeLICM/pr41656.ll | 2 +- polly/test/DeLICM/pr48783.ll | 2 +- polly/test/DeLICM/reduction.ll | 2 +- .../DeLICM/reduction_constant_selfconflict.ll | 2 +- polly/test/DeLICM/reduction_looprotate.ll | 2 +- .../reduction_looprotate_alwaystaken.ll | 2 +- .../DeLICM/reduction_looprotate_gvnpre.ll | 4 +- .../reduction_looprotate_gvnpre_cond1.ll | 2 +- .../reduction_looprotate_gvnpre_cond2.ll | 2 +- ...reduction_looprotate_gvnpre_nopreheader.ll | 2 +- .../DeLICM/reduction_looprotate_hoisted.ll | 2 +- .../test/DeLICM/reduction_looprotate_licm.ll | 2 +- .../test/DeLICM/reduction_looprotate_licm2.ll | 2 +- .../reduction_looprotate_licm_double_write.ll | 5 +- .../reduction_looprotate_licm_nopreheader.ll | 2 +- .../test/DeLICM/reduction_looprotate_load.ll | 2 +- .../reduction_looprotate_loopguard_gvnpre.ll | 2 +- .../reduction_looprotate_loopguard_licm1.ll | 2 +- .../reduction_looprotate_loopguard_licm2.ll | 2 +- .../reduction_looprotate_loopguard_licm3.ll | 2 +- .../DeLICM/reduction_looprotate_readonly.ll | 2 +- .../reduction_looprotate_synthesizable.ll | 2 +- .../test/DeLICM/reduction_looprotate_undef.ll | 2 +- .../test/DeLICM/reduction_overapproximate.ll | 6 +- polly/test/DeLICM/reduction_preheader.ll | 2 +- .../test/DeLICM/reduction_unrelatedunusual.ll | 2 +- polly/test/DeLICM/reject_loadafterstore.ll | 2 +- polly/test/DeLICM/reject_outofquota.ll | 4 +- polly/test/DeLICM/reject_storeafterstore.ll | 2 +- polly/test/DeLICM/reject_storeinsubregion.ll | 2 +- polly/test/DeLICM/reject_unusualstore.ll | 4 +- polly/test/DeLICM/skip_maywrite.ll | 2 +- polly/test/DeLICM/skip_multiaccess.ll | 2 +- polly/test/DeLICM/skip_notinloop.ll | 2 +- polly/test/DeLICM/skip_scalaraccess.ll | 2 +- .../DeadCodeElimination/chained_iterations.ll | 4 +- .../chained_iterations_2.ll | 4 +- polly/test/DeadCodeElimination/computeout.ll | 4 +- .../dead_iteration_elimination.ll | 2 +- .../non-affine-affine-mix.ll | 2 +- polly/test/DeadCodeElimination/non-affine.ll | 2 +- .../test/DeadCodeElimination/null_schedule.ll | 2 +- polly/test/DependenceInfo/computeout.ll | 4 +- .../different_schedule_dimensions.ll | 3 +- polly/test/DependenceInfo/do_pluto_matmult.ll | 4 +- polly/test/DependenceInfo/fine_grain_dep_0.ll | 4 +- .../generate_may_write_dependence_info.ll | 2 +- .../test/DependenceInfo/infeasible_context.ll | 6 +- ...writes_do_not_block_must_writes_for_war.ll | 2 +- .../nonaffine-condition-buildMemoryAccess.ll | 2 +- .../reduction_complex_location.ll | 6 +- ...ndences_equal_non_reduction_dependences.ll | 2 +- .../reduction_dependences_not_null.ll | 2 +- .../reduction_indirect_access.ll | 2 +- ...reduction_and_non_reduction_dependences.ll | 2 +- .../reduction_multiple_loops_array_sum.ll | 6 +- .../reduction_multiple_loops_array_sum_2.ll | 2 +- .../reduction_multiple_loops_array_sum_3.ll | 2 +- .../reduction_multiple_reductions.ll | 2 +- .../reduction_multiple_reductions_2.ll | 2 +- .../reduction_only_reduction_like_access.ll | 2 +- ...lly_escaping_intermediate_in_other_stmt.ll | 2 +- .../reduction_privatization_deps.ll | 2 +- .../reduction_privatization_deps_2.ll | 2 +- .../reduction_privatization_deps_3.ll | 2 +- .../reduction_privatization_deps_4.ll | 2 +- .../reduction_privatization_deps_5.ll | 2 +- .../test/DependenceInfo/reduction_sequence.ll | 2 +- .../DependenceInfo/reduction_simple_iv.ll | 2 +- ...ion_simple_iv_debug_wrapped_dependences.ll | 2 +- .../reduction_simple_privatization_deps_2.ll | 2 +- ...n_simple_privatization_deps_w_parameter.ll | 2 +- ...duction_two_reductions_different_rloops.ll | 2 +- polly/test/DependenceInfo/sequential_loops.ll | 6 +- polly/test/FlattenSchedule/gemm.ll | 2 +- polly/test/ForwardOpTree/atax.ll | 2 +- polly/test/ForwardOpTree/changed-kind.ll | 2 +- .../test/ForwardOpTree/forward_from_region.ll | 2 +- polly/test/ForwardOpTree/forward_hoisted.ll | 2 +- .../test/ForwardOpTree/forward_instruction.ll | 2 +- .../test/ForwardOpTree/forward_into_region.ll | 2 +- .../forward_into_region_redundant_use.ll | 2 +- polly/test/ForwardOpTree/forward_load.ll | 2 +- .../forward_load_differentarray.ll | 2 +- .../forward_load_double_write.ll | 2 +- .../ForwardOpTree/forward_load_fromloop.ll | 2 +- .../ForwardOpTree/forward_load_indirect.ll | 2 +- .../forward_load_memset_after.ll | 2 +- .../forward_load_memset_before.ll | 2 +- .../ForwardOpTree/forward_load_tripleuse.ll | 2 +- .../forward_load_unrelatedunusual.ll | 2 +- polly/test/ForwardOpTree/forward_phi_load.ll | 2 +- polly/test/ForwardOpTree/forward_readonly.ll | 4 +- polly/test/ForwardOpTree/forward_reusue.ll | 2 +- polly/test/ForwardOpTree/forward_store.ll | 2 +- .../forward_synthesizable_definloop.ll | 2 +- .../forward_synthesizable_indvar.ll | 2 +- .../forward_synthesizable_useinloop.ll | 2 +- .../test/ForwardOpTree/forward_transitive.ll | 2 +- polly/test/ForwardOpTree/jacobi-1d.ll | 2 +- .../ForwardOpTree/noforward_from_region.ll | 2 +- .../noforward_load_conditional.ll | 2 +- .../noforward_load_writebetween.ll | 2 +- .../ForwardOpTree/noforward_outofquota.ll | 4 +- polly/test/ForwardOpTree/noforward_partial.ll | 2 +- polly/test/ForwardOpTree/noforward_phi.ll | 2 +- .../ForwardOpTree/noforward_selfrefphi.ll | 2 +- .../ForwardOpTree/noforward_sideffects.ll | 2 +- .../noforward_synthesizable_unknownit.ll | 2 +- polly/test/ForwardOpTree/out-of-quota1.ll | 2 +- .../OpenMP/multiple_loops_outer_parallel.ll | 2 +- .../OpenMP/nested_loop_both_parallel.ll | 2 +- .../nested_loop_both_parallel_parametric.ll | 2 +- .../OpenMP/nested_loop_inner_parallel.ll | 2 +- .../OpenMP/nested_loop_outer_parallel.ll | 2 +- .../OpenMP/single_loop_param_non_parallel.ll | 2 +- .../OpenMP/single_loop_param_parallel.ll | 2 +- .../single_loop_param_parallel_computeout.ll | 2 +- .../alias_checks_with_empty_context.ll | 3 +- polly/test/IstAstInfo/alias_simple_1.ll | 10 +- polly/test/IstAstInfo/alias_simple_2.ll | 12 +- polly/test/IstAstInfo/alias_simple_3.ll | 10 +- .../aliasing_arrays_with_identical_base.ll | 4 +- .../aliasing_multiple_alias_groups.ll | 4 +- .../aliasing_parametric_simple_1.ll | 2 +- .../aliasing_parametric_simple_2.ll | 2 +- .../dependence_distance_constant.ll | 2 +- .../IstAstInfo/dependence_distance_minimal.ll | 2 +- .../dependence_distance_multiple_constant.ll | 2 +- .../dependence_distance_parametric.ll | 2 +- .../dependence_distance_parametric_expr.ll | 2 +- .../IstAstInfo/dependence_distance_varying.ll | 2 +- ...pendence_distance_varying_in_outer_loop.ll | 2 +- .../dependence_distance_varying_multiple.ll | 2 +- .../domain_bounded_only_with_context.ll | 2 +- polly/test/IstAstInfo/non_affine_access.ll | 2 +- ...duction_clauses_multidimensional_access.ll | 2 +- ...reduction_clauses_onedimensional_access.ll | 2 +- ...ndences_equal_non_reduction_dependences.ll | 2 +- .../reduction_different_reduction_clauses.ll | 2 +- .../IstAstInfo/reduction_in_one_dimension.ll | 2 +- .../IstAstInfo/reduction_loop_reversal.ll | 2 +- ...ction_modulo_and_loop_reversal_schedule.ll | 2 +- ...ion_modulo_and_loop_reversal_schedule_2.ll | 2 +- .../IstAstInfo/reduction_modulo_schedule.ll | 2 +- ...ion_modulo_schedule_multiple_dimensions.ll | 2 +- ...n_modulo_schedule_multiple_dimensions_2.ll | 2 +- ...n_modulo_schedule_multiple_dimensions_3.ll | 2 +- ...n_modulo_schedule_multiple_dimensions_4.ll | 2 +- ...n_modulo_schedule_multiple_dimensions_5.ll | 2 +- .../reduction_multiple_dimensions.ll | 2 +- .../reduction_multiple_dimensions_2.ll | 2 +- .../reduction_multiple_dimensions_3.ll | 2 +- .../reduction_multiple_dimensions_4.ll | 2 +- polly/test/IstAstInfo/run-time-condition.ll | 2 +- .../runtime_context_with_error_blocks.ll | 2 +- .../IstAstInfo/simple-run-time-condition.ll | 2 +- .../test/IstAstInfo/single_loop_strip_mine.ll | 4 +- .../single_loop_uint_max_iterations.ll | 2 +- .../single_loop_ull_max_iterations.ll | 2 +- .../ImportAccesses-Bad-relation.ll | 2 +- .../ImportAccesses-No-accesses-key.ll | 2 +- .../ImportAccesses-Not-enough-MemAcc.ll | 2 +- .../ImportAccesses-Not-enough-statements.ll | 2 +- .../ImportAccesses-Relation-mispelled.ll | 2 +- .../ImportAccesses-Statements-mispelled.ll | 2 +- ...ImportAccesses-Undeclared-ScopArrayInfo.ll | 2 +- .../ImportAccesses-Wrong-number-dimensions.ll | 2 +- .../ImportArrays-Mispelled-type.ll | 2 +- .../ImportArrays-Negative-size.ll | 2 +- .../ImportArrays/ImportArrays-No-name.ll | 2 +- .../ImportArrays/ImportArrays-No-sizes-key.ll | 2 +- .../ImportArrays/ImportArrays-No-type-key.ll | 2 +- .../ImportContext-Context-mispelled.ll | 2 +- .../ImportContext-Not-parameter-set.ll | 2 +- .../ImportContext-Unvalid-Context.ll | 2 +- .../ImportContext-Wrong-dimension.ll | 2 +- .../ImportSchedule-No-schedule-key.ll | 2 +- .../ImportSchedule-Schedule-not-valid.ll | 2 +- .../ImportSchedule-Statements-mispelled.ll | 2 +- .../ImportSchedule-Wrong-number-statements.ll | 2 +- .../load_after_store_same_statement.ll | 4 +- .../read_from_original.ll | 4 +- .../MaximalStaticExpansion/too_many_writes.ll | 4 +- .../working_deps_between_inners.ll | 2 +- .../working_deps_between_inners_phi.ll | 4 +- .../working_expansion.ll | 2 +- ...sion_multiple_dependences_per_statement.ll | 2 +- ...sion_multiple_instruction_per_statement.ll | 2 +- .../working_phi_expansion.ll | 4 +- .../working_phi_two_scalars.ll | 4 +- .../working_value_expansion.ll | 2 +- .../prune_only_scalardeps.ll | 2 +- .../2012-03-16-Empty-Domain.ll | 2 +- .../2013-04-11-Empty-Domain-two.ll | 2 +- .../GreedyFuse/fuse-double.ll | 4 +- .../GreedyFuse/fuse-except-first.ll | 4 +- .../GreedyFuse/fuse-except-third.ll | 4 +- .../GreedyFuse/fuse-inner-carried.ll | 4 +- .../GreedyFuse/fuse-inner-third.ll | 4 +- .../GreedyFuse/fuse-inner.ll | 4 +- .../GreedyFuse/fuse-simple.ll | 4 +- .../GreedyFuse/nofuse-simple.ll | 4 +- .../GreedyFuse/nofuse-with-middle.ll | 4 +- .../ManualOptimization/disable_nonforced.ll | 2 +- .../distribute_heuristic.ll | 4 +- .../distribute_illegal_looploc.ll | 2 +- .../distribute_illegal_pragmaloc.ll | 2 +- .../ManualOptimization/unroll_disable.ll | 2 +- .../ManualOptimization/unroll_double.ll | 2 +- .../ManualOptimization/unroll_full.ll | 2 +- .../ManualOptimization/unroll_heuristic.ll | 4 +- .../ManualOptimization/unroll_partial.ll | 4 +- .../unroll_partial_followup.ll | 8 +- .../ScheduleOptimizer/SIMDInParallelFor.ll | 2 +- polly/test/ScheduleOptimizer/computeout.ll | 4 +- .../ensure-correct-tile-sizes.ll | 7 +- .../focaltech_test_detail_threshold-7bc17e.ll | 2 +- .../full_partial_tile_separation.ll | 2 +- polly/test/ScheduleOptimizer/line-tiling-2.ll | 2 +- polly/test/ScheduleOptimizer/line-tiling.ll | 2 +- .../mat_mul_pattern_data_layout.ll | 11 +- .../mat_mul_pattern_data_layout_2.ll | 10 +- .../ScheduleOptimizer/one-dimensional-band.ll | 2 +- .../ScheduleOptimizer/outer_coincidence.ll | 4 +- ...attern-matching-based-opts-after-delicm.ll | 6 +- ...tern-matching-based-opts-after-delicm_2.ll | 4 +- .../pattern-matching-based-opts.ll | 9 +- .../pattern-matching-based-opts_11.ll | 14 +- .../pattern-matching-based-opts_12.ll | 10 +- .../pattern-matching-based-opts_13.ll | 10 +- .../pattern-matching-based-opts_14.ll | 11 +- .../pattern-matching-based-opts_15.ll | 4 +- .../pattern-matching-based-opts_16.ll | 3 +- .../pattern-matching-based-opts_17.ll | 3 +- .../pattern-matching-based-opts_18.ll | 3 +- .../pattern-matching-based-opts_19.ll | 3 +- .../pattern-matching-based-opts_2.ll | 3 +- .../pattern-matching-based-opts_20.ll | 3 +- .../pattern-matching-based-opts_21.ll | 3 +- .../pattern-matching-based-opts_22.ll | 3 +- .../pattern-matching-based-opts_24.ll | 4 +- .../pattern-matching-based-opts_25.ll | 3 +- .../pattern-matching-based-opts_3.ll | 17 +- .../pattern-matching-based-opts_4.ll | 12 +- .../pattern-matching-based-opts_5.ll | 10 +- .../pattern-matching-based-opts_6.ll | 10 +- .../pattern-matching-based-opts_7.ll | 10 +- .../pattern-matching-based-opts_8.ll | 10 +- .../pattern-matching-based-opts_9.ll | 12 +- .../pattern_matching_based_opts_splitmap.ll | 2 +- .../prevectorization-without-tiling.ll | 2 +- .../ScheduleOptimizer/prevectorization.ll | 4 +- .../prevectorization_islbound.ll | 2 +- .../ScheduleOptimizer/rectangular-tiling.ll | 8 +- .../ScheduleOptimizer/schedule_computeout.ll | 2 +- polly/test/ScheduleOptimizer/statistics.ll | 2 +- .../ScheduleOptimizer/tile_after_fusion.ll | 2 +- ...vivid_vbi_gen_sliced-before-llvmreduced.ll | 2 +- .../aliasing_parametric_simple_1.ll | 2 +- .../aliasing_parametric_simple_2.ll | 2 +- polly/test/ScopDetect/aliasing_simple_1.ll | 2 +- polly/test/ScopDetect/aliasing_simple_2.ll | 2 +- polly/test/ScopDetect/base_pointer.ll | 2 +- .../base_pointer_load_setNewAccessRelation.ll | 2 +- .../base_pointer_setNewAccessRelation.ll | 4 +- polly/test/ScopDetect/callbr.ll | 4 +- .../ScopDetect/collective_invariant_loads.ll | 2 +- .../ScopDetect/cross_loop_non_single_exit.ll | 2 +- .../cross_loop_non_single_exit_2.ll | 2 +- ...ependency_to_phi_node_outside_of_region.ll | 2 +- .../test/ScopDetect/detect-full-functions.ll | 2 +- polly/test/ScopDetect/dom-tree-crash.ll | 2 +- polly/test/ScopDetect/dot-scops-npm.ll | 2 +- polly/test/ScopDetect/dot-scops.ll | 2 +- .../ScopDetect/error-block-always-executed.ll | 2 +- .../error-block-referenced-from-scop.ll | 2 +- .../ScopDetect/error-block-unreachable.ll | 2 +- .../ScopDetect/expand-region-correctly-2.ll | 2 +- .../ScopDetect/expand-region-correctly.ll | 2 +- .../test/ScopDetect/ignore_func_flag_regex.ll | 2 +- .../index_from_unpredictable_loop.ll | 4 +- .../index_from_unpredictable_loop2.ll | 4 +- polly/test/ScopDetect/indvars.ll | 2 +- polly/test/ScopDetect/intrinsics_1.ll | 2 +- polly/test/ScopDetect/intrinsics_2.ll | 2 +- polly/test/ScopDetect/intrinsics_3.ll | 2 +- .../ScopDetect/invalid-latch-conditions.ll | 6 +- .../ScopDetect/invalidate_scalar_evolution.ll | 2 +- .../ScopDetect/invariant-load-before-scop.ll | 2 +- polly/test/ScopDetect/keep_going_expansion.ll | 2 +- polly/test/ScopDetect/mod_ref_read_pointer.ll | 4 +- polly/test/ScopDetect/more-than-one-loop.ll | 4 +- .../ScopDetect/multidim-with-undef-size.ll | 2 +- polly/test/ScopDetect/multidim.ll | 2 +- .../ScopDetect/multidim_indirect_access.ll | 2 +- ..._two_accesses_different_delinearization.ll | 2 +- .../ScopDetect/nested_loop_single_exit.ll | 4 +- .../test/ScopDetect/non-affine-conditional.ll | 2 +- .../ScopDetect/non-affine-float-compare.ll | 2 +- ...-affine-loop-condition-dependent-access.ll | 8 +- ...ffine-loop-condition-dependent-access_2.ll | 6 +- ...ffine-loop-condition-dependent-access_3.ll | 6 +- polly/test/ScopDetect/non-affine-loop.ll | 10 +- .../non-beneficial-loops-small-trip-count.ll | 2 +- .../non-constant-add-rec-start-expr.ll | 2 +- .../ScopDetect/non-simple-memory-accesses.ll | 2 +- .../ScopDetect/non_affine_loop_condition.ll | 4 +- polly/test/ScopDetect/only-one-affine-loop.ll | 2 +- polly/test/ScopDetect/only_func_flag.ll | 2 +- polly/test/ScopDetect/only_func_flag_regex.ll | 2 +- .../parametric-multiply-in-scev-2.ll | 2 +- .../ScopDetect/parametric-multiply-in-scev.ll | 2 +- .../phi_with_multi_exiting_edges.ll | 2 +- .../profitability-large-basic-blocks.ll | 10 +- .../profitability-two-nested-loops.ll | 2 +- polly/test/ScopDetect/remove_all_children.ll | 2 +- polly/test/ScopDetect/report-scop-location.ll | 2 +- .../restrict-undef-size-scopdetect.ll | 2 +- polly/test/ScopDetect/run_time_alias_check.ll | 2 +- polly/test/ScopDetect/scev_remove_max.ll | 2 +- polly/test/ScopDetect/sequential_loops.ll | 2 +- polly/test/ScopDetect/simple_loop.ll | 2 +- .../simple_loop_non_single_entry.ll | 2 +- .../ScopDetect/simple_loop_non_single_exit.ll | 2 +- .../simple_loop_non_single_exit_2.ll | 2 +- .../ScopDetect/simple_loop_two_phi_nodes.ll | 2 +- .../test/ScopDetect/simple_loop_with_param.ll | 2 +- .../ScopDetect/simple_loop_with_param_2.ll | 2 +- .../ScopDetect/simple_non_single_entry.ll | 2 +- .../ScopDetect/skip_function_attribute.ll | 2 +- .../srem_with_parametric_divisor.ll | 2 +- polly/test/ScopDetect/statistics.ll | 2 +- polly/test/ScopDetect/switch-in-loop-patch.ll | 2 +- .../test/ScopDetect/tlr_is_hoistable_load.ll | 2 +- .../ReportAlias-01.ll | 2 +- .../ScopDetectionDiagnostics/ReportEntry.ll | 2 +- .../ReportFuncCall-01.ll | 2 +- .../ReportIrreducibleRegion.ll | 2 +- .../ReportIrreducibleRegionWithoutDebugLoc.ll | 2 +- .../ReportLoopBound-01.ll | 16 +- .../ReportLoopHasNoExit.ll | 4 +- .../ReportMultipleNonAffineAccesses.ll | 12 +- .../ReportNonAffineAccess-01.ll | 2 +- .../ReportUnprofitable.ll | 8 +- .../ReportUnreachableInExit.ll | 3 +- .../ReportVariantBasePtr-01.ll | 2 +- .../loop_has_multiple_exits.ll | 2 +- .../loop_partially_in_scop-2.ll | 2 +- .../loop_partially_in_scop.ll | 2 +- .../ScopInfo/20110312-Fail-without-basicaa.ll | 2 +- .../20111108-Parameter-not-detected.ll | 2 +- ...03-16-Crash-because-of-unsigned-in-scev.ll | 2 +- .../2015-10-04-Crash-in-domain-generation.ll | 2 +- polly/test/ScopInfo/Alias-0.ll | 4 +- polly/test/ScopInfo/Alias-1.ll | 4 +- polly/test/ScopInfo/Alias-2.ll | 4 +- polly/test/ScopInfo/Alias-3.ll | 4 +- polly/test/ScopInfo/Alias-4.ll | 4 +- .../test/ScopInfo/BoundChecks/single-loop.ll | 4 +- polly/test/ScopInfo/BoundChecks/two-loops.ll | 4 +- polly/test/ScopInfo/NonAffine/div_backedge.ll | 2 +- polly/test/ScopInfo/NonAffine/div_domain.ll | 2 +- ...nt_loads_dependent_in_non_affine_region.ll | 2 +- .../ScopInfo/NonAffine/modulo_backedge.ll | 2 +- .../test/ScopInfo/NonAffine/modulo_domain.ll | 2 +- ...ffine-loop-condition-dependent-access_1.ll | 4 +- ...ffine-loop-condition-dependent-access_2.ll | 6 +- ...ffine-loop-condition-dependent-access_3.ll | 6 +- .../non_affine_access_with_range_2.ll | 2 +- .../ScopInfo/NonAffine/non_affine_but_sdiv.ll | 2 +- .../ScopInfo/NonAffine/non_affine_but_srem.ll | 2 +- .../non_affine_conditional_nested.ll | 2 +- ...ine_conditional_surrounding_affine_loop.ll | 11 +- ...conditional_surrounding_non_affine_loop.ll | 16 +- .../NonAffine/non_affine_float_compare.ll | 2 +- .../NonAffine/non_affine_loop_condition.ll | 6 +- .../NonAffine/non_affine_loop_used_later.ll | 4 +- .../NonAffine/non_affine_parametric_loop.ll | 2 +- .../non_affine_region_guaranteed_non-entry.ll | 2 +- ...whole-scop-non-affine-subregion-in-loop.ll | 2 +- .../aliasing_conditional_alias_groups_1.ll | 2 +- .../aliasing_conditional_alias_groups_2.ll | 2 +- polly/test/ScopInfo/aliasing_dead_access.ll | 2 +- .../aliasing_many_arrays_to_compare.ll | 7 +- ...iasing_many_parameters_not_all_involved.ll | 4 +- .../aliasing_many_read_only_acesses.ll | 2 +- .../aliasing_multiple_alias_groups.ll | 4 +- .../aliasing_with_non_affine_access.ll | 2 +- .../allow-all-parameters-dereferencable.ll | 11 +- polly/test/ScopInfo/assume_gep_bounds.ll | 4 +- polly/test/ScopInfo/assume_gep_bounds_2.ll | 3 +- polly/test/ScopInfo/assume_gep_bounds_many.ll | 3 +- .../avoid_new_parameters_from_geps.ll | 2 +- polly/test/ScopInfo/bool-addrec.ll | 2 +- .../test/ScopInfo/bounded_loop_assumptions.ll | 2 +- ...ces-loop-scev-with-unknown-iterations-2.ll | 6 +- ...ces-loop-scev-with-unknown-iterations-3.ll | 7 +- ...ences-loop-scev-with-unknown-iterations.ll | 7 +- polly/test/ScopInfo/bug_2010_10_22.ll | 2 +- polly/test/ScopInfo/bug_2011_1_5.ll | 2 +- .../test/ScopInfo/bug_scev_not_fully_eval.ll | 2 +- polly/test/ScopInfo/cfg_consequences.ll | 2 +- .../test/ScopInfo/complex-branch-structure.ll | 3 +- polly/test/ScopInfo/complex-condition.ll | 4 +- polly/test/ScopInfo/complex-expression.ll | 4 +- polly/test/ScopInfo/complex-loop-nesting.ll | 2 +- .../ScopInfo/complex-successor-structure-2.ll | 4 +- .../ScopInfo/complex-successor-structure-3.ll | 3 +- .../ScopInfo/complex-successor-structure.ll | 4 +- .../complex_domain_binary_condition.ll | 3 +- .../ScopInfo/complex_execution_context.ll | 4 +- polly/test/ScopInfo/cond_constant_in_loop.ll | 2 +- polly/test/ScopInfo/cond_in_loop.ll | 2 +- .../ScopInfo/condition-after-error-block-2.ll | 2 +- ...condition-after-error-block-before-scop.ll | 2 +- .../ScopInfo/condtion-after-error-block.ll | 2 +- polly/test/ScopInfo/const_srem_sdiv.ll | 3 +- .../constant-non-integer-branch-condition.ll | 2 +- .../ScopInfo/constant_factor_in_parameter.ll | 4 +- ...stant_functions_outside_scop_as_unknown.ll | 2 +- polly/test/ScopInfo/constant_start_integer.ll | 2 +- polly/test/ScopInfo/debug_call.ll | 2 +- .../delinearize-together-all-data-refs.ll | 2 +- polly/test/ScopInfo/div_by_zero.ll | 2 +- .../do-not-model-error-block-accesses.ll | 2 +- .../eager-binary-and-or-conditions.ll | 4 +- .../early_exit_for_complex_domains.ll | 2 +- polly/test/ScopInfo/error-blocks-1.ll | 2 +- polly/test/ScopInfo/error-blocks-2.ll | 3 +- polly/test/ScopInfo/error-blocks-3.ll | 2 +- polly/test/ScopInfo/escaping_empty_scop.ll | 2 +- polly/test/ScopInfo/exit-phi-1.ll | 4 +- polly/test/ScopInfo/exit-phi-2.ll | 2 +- polly/test/ScopInfo/exit_phi_accesses-2.ll | 2 +- polly/test/ScopInfo/exit_phi_accesses.ll | 2 +- .../ScopInfo/expensive-boundary-context.ll | 3 +- ...onstant_factor_introduces_new_parameter.ll | 4 +- polly/test/ScopInfo/full-function.ll | 6 +- polly/test/ScopInfo/granularity_same_name.ll | 8 +- .../test/ScopInfo/granularity_scalar-indep.ll | 2 +- ...ity_scalar-indep_cross-referencing-phi1.ll | 2 +- ...ity_scalar-indep_cross-referencing-phi2.ll | 2 +- .../granularity_scalar-indep_epilogue.ll | 2 +- .../granularity_scalar-indep_epilogue_last.ll | 2 +- .../granularity_scalar-indep_noepilogue.ll | 2 +- .../granularity_scalar-indep_ordered-2.ll | 2 +- .../granularity_scalar-indep_ordered.ll | 2 +- polly/test/ScopInfo/i1_params.ll | 2 +- polly/test/ScopInfo/infeasible-rtc.ll | 6 +- .../ScopInfo/infeasible_invalid_context.ll | 6 +- polly/test/ScopInfo/int2ptr_ptr2int.ll | 4 +- polly/test/ScopInfo/int2ptr_ptr2int_2.ll | 6 +- polly/test/ScopInfo/integers.ll | 2 +- .../ScopInfo/inter-error-bb-dependence.ll | 2 +- polly/test/ScopInfo/inter_bb_scalar_dep.ll | 3 +- .../intra-non-affine-stmt-phi-node.ll | 3 +- .../ScopInfo/intra_and_inter_bb_scalar_dep.ll | 3 +- polly/test/ScopInfo/intra_bb_scalar_dep.ll | 3 +- polly/test/ScopInfo/intrinsics.ll | 2 +- ..._add_rec_after_invariant_load_remapping.ll | 2 +- .../invalidate_iterator_during_MA_removal.ll | 2 +- .../test/ScopInfo/invariant-load-instlist.ll | 2 +- ...ariant-loads-leave-read-only-statements.ll | 4 +- polly/test/ScopInfo/invariant_load.ll | 2 +- ...load_access_classes_different_base_type.ll | 4 +- ...ss_classes_different_base_type_escaping.ll | 4 +- ...lasses_different_base_type_same_pointer.ll | 4 +- ...fferent_base_type_same_pointer_escaping.ll | 4 +- .../ScopInfo/invariant_load_addrec_sum.ll | 2 +- .../ScopInfo/invariant_load_base_pointer.ll | 2 +- ...invariant_load_base_pointer_conditional.ll | 2 +- ...ariant_load_base_pointer_in_conditional.ll | 2 +- .../invariant_load_branch_condition.ll | 3 +- ...ariant_load_canonicalize_array_baseptrs.ll | 4 +- ...iant_load_canonicalize_array_baseptrs_2.ll | 4 +- ...iant_load_canonicalize_array_baseptrs_3.ll | 4 +- ...iant_load_canonicalize_array_baseptrs_4.ll | 4 +- ...ant_load_canonicalize_array_baseptrs_4b.ll | 4 +- ...ant_load_canonicalize_array_baseptrs_4c.ll | 4 +- ...iant_load_canonicalize_array_baseptrs_5.ll | 4 +- .../invariant_load_complex_condition.ll | 3 +- .../test/ScopInfo/invariant_load_condition.ll | 2 +- .../invariant_load_dereferenceable.ll | 4 +- ...iant_load_distinct_parameter_valuations.ll | 2 +- .../ScopInfo/invariant_load_in_non_affine.ll | 3 +- polly/test/ScopInfo/invariant_load_loop_ub.ll | 4 +- .../invariant_load_ptr_ptr_noalias.ll | 3 +- .../ScopInfo/invariant_load_scalar_dep.ll | 2 +- .../ScopInfo/invariant_load_stmt_domain.ll | 2 +- .../invariant_load_zext_parameter-2.ll | 4 +- .../ScopInfo/invariant_load_zext_parameter.ll | 4 +- ...load_zextended_in_own_execution_context.ll | 4 +- ...invariant_loads_complicated_dependences.ll | 2 +- .../invariant_loads_cyclic_dependences.ll | 2 +- polly/test/ScopInfo/invariant_loop_bounds.ll | 2 +- ...ariant_same_loop_bound_multiple_times-1.ll | 2 +- ...ariant_same_loop_bound_multiple_times-2.ll | 2 +- polly/test/ScopInfo/isl_aff_out_of_bounds.ll | 2 +- polly/test/ScopInfo/isl_trip_count_01.ll | 2 +- polly/test/ScopInfo/isl_trip_count_02.ll | 2 +- polly/test/ScopInfo/isl_trip_count_03.ll | 2 +- .../isl_trip_count_multiple_exiting_blocks.ll | 2 +- polly/test/ScopInfo/licm_load.ll | 31 +- polly/test/ScopInfo/licm_potential_store.ll | 79 +++- .../ScopInfo/licm_potential_store_mssa.ll | 50 --- polly/test/ScopInfo/licm_reduction_nested.ll | 4 +- .../long-compile-time-alias-analysis.ll | 2 +- .../long-sequence-of-error-blocks-2.ll | 2 +- .../ScopInfo/long-sequence-of-error-blocks.ll | 3 +- .../test/ScopInfo/loop-multiexit-succ-cond.ll | 4 +- polly/test/ScopInfo/loop_affine_bound_0.ll | 4 +- polly/test/ScopInfo/loop_affine_bound_1.ll | 4 +- polly/test/ScopInfo/loop_affine_bound_2.ll | 4 +- polly/test/ScopInfo/loop_carry.ll | 2 +- .../test/ScopInfo/many-scalar-dependences.ll | 2 +- polly/test/ScopInfo/max-loop-depth.ll | 2 +- polly/test/ScopInfo/memcpy-raw-source.ll | 2 +- polly/test/ScopInfo/memcpy.ll | 4 +- polly/test/ScopInfo/memmove.ll | 4 +- polly/test/ScopInfo/memset.ll | 4 +- polly/test/ScopInfo/memset_null.ll | 4 +- .../ScopInfo/mismatching-array-dimensions.ll | 2 +- .../mod_ref_access_pointee_arguments.ll | 6 +- .../mod_ref_read_pointee_arguments.ll | 6 +- polly/test/ScopInfo/mod_ref_read_pointer.ll | 4 +- polly/test/ScopInfo/mod_ref_read_pointers.ll | 6 +- polly/test/ScopInfo/modulo_zext_1.ll | 2 +- polly/test/ScopInfo/modulo_zext_2.ll | 2 +- polly/test/ScopInfo/modulo_zext_3.ll | 2 +- polly/test/ScopInfo/multi-scop.ll | 2 +- .../ScopInfo/multidim_2d-diagonal-matrix.ll | 4 +- .../multidim_2d_outer_parametric_offset.ll | 2 +- ..._2d_parametric_array_static_loop_bounds.ll | 2 +- .../ScopInfo/multidim_2d_with_modref_call.ll | 8 +- .../multidim_2d_with_modref_call_2.ll | 8 +- ..._3d_parametric_array_static_loop_bounds.ll | 2 +- ...idim_fixedsize_different_dimensionality.ll | 2 +- .../multidim_fixedsize_multi_offset.ll | 2 +- .../ScopInfo/multidim_fold_constant_dim.ll | 2 +- .../multidim_fold_constant_dim_zero.ll | 2 +- polly/test/ScopInfo/multidim_fortran_2d.ll | 3 +- .../ScopInfo/multidim_fortran_2d_params.ll | 4 +- .../multidim_fortran_2d_with_modref_call.ll | 8 +- polly/test/ScopInfo/multidim_fortran_srem.ll | 2 +- .../test/ScopInfo/multidim_gep_pointercast.ll | 2 +- .../ScopInfo/multidim_gep_pointercast2.ll | 2 +- .../ScopInfo/multidim_invalid_dimension.ll | 2 +- .../multidim_ivs_and_integer_offsets_3d.ll | 2 +- ...multidim_ivs_and_parameteric_offsets_3d.ll | 2 +- .../test/ScopInfo/multidim_many_references.ll | 4 +- .../ScopInfo/multidim_nested_start_integer.ll | 4 +- .../multidim_nested_start_share_parameter.ll | 2 +- polly/test/ScopInfo/multidim_only_ivs_2d.ll | 2 +- polly/test/ScopInfo/multidim_only_ivs_3d.ll | 2 +- .../ScopInfo/multidim_only_ivs_3d_cast.ll | 2 +- .../ScopInfo/multidim_only_ivs_3d_reverse.ll | 2 +- .../ScopInfo/multidim_param_in_subscript-2.ll | 2 +- .../ScopInfo/multidim_param_in_subscript.ll | 2 +- .../multidim_parameter_addrec_product.ll | 2 +- .../multidim_single_and_multidim_array.ll | 16 +- polly/test/ScopInfo/multidim_srem.ll | 2 +- polly/test/ScopInfo/multidim_with_bitcast.ll | 2 +- .../ScopInfo/multiple-binary-or-conditions.ll | 4 +- ...ss-offset-not-dividable-by-element-size.ll | 4 +- .../ScopInfo/multiple-types-non-affine-2.ll | 4 +- .../ScopInfo/multiple-types-non-affine.ll | 4 +- .../multiple-types-non-power-of-two-2.ll | 2 +- .../multiple-types-non-power-of-two.ll | 2 +- .../multiple-types-two-dimensional-2.ll | 4 +- .../multiple-types-two-dimensional.ll | 4 +- polly/test/ScopInfo/multiple-types.ll | 3 +- .../test/ScopInfo/multiple_exiting_blocks.ll | 2 +- .../multiple_exiting_blocks_two_loop.ll | 2 +- polly/test/ScopInfo/multiple_latch_blocks.ll | 2 +- polly/test/ScopInfo/nested-loops.ll | 2 +- .../no-scalar-deps-in-non-affine-subregion.ll | 2 +- polly/test/ScopInfo/non-affine-region-phi.ll | 4 +- .../ScopInfo/non-affine-region-with-loop-2.ll | 2 +- .../ScopInfo/non-affine-region-with-loop.ll | 4 +- polly/test/ScopInfo/non-precise-inv-load-1.ll | 2 +- polly/test/ScopInfo/non-precise-inv-load-2.ll | 2 +- polly/test/ScopInfo/non-precise-inv-load-3.ll | 2 +- polly/test/ScopInfo/non-precise-inv-load-4.ll | 2 +- polly/test/ScopInfo/non-precise-inv-load-5.ll | 2 +- polly/test/ScopInfo/non-precise-inv-load-6.ll | 2 +- polly/test/ScopInfo/non-pure-function-call.ll | 2 +- ...-pure-function-calls-causes-dead-blocks.ll | 2 +- .../test/ScopInfo/non-pure-function-calls.ll | 2 +- polly/test/ScopInfo/non_affine_access.ll | 4 +- polly/test/ScopInfo/non_affine_region_1.ll | 2 +- polly/test/ScopInfo/non_affine_region_2.ll | 2 +- polly/test/ScopInfo/non_affine_region_3.ll | 4 +- polly/test/ScopInfo/non_affine_region_4.ll | 2 +- .../ScopInfo/nonaffine-buildMemoryAccess.ll | 2 +- polly/test/ScopInfo/not-a-reduction.ll | 2 +- polly/test/ScopInfo/opaque-struct.ll | 2 +- ...gion-entry-phi-node-nonaffine-subregion.ll | 2 +- ...ut-of-scop-use-in-region-entry-phi-node.ll | 2 +- .../ScopInfo/parameter-constant-division.ll | 4 +- .../ScopInfo/parameter_in_dead_statement.ll | 6 +- polly/test/ScopInfo/parameter_product.ll | 2 +- .../parameter_with_constant_factor_in_add.ll | 2 +- .../ScopInfo/partially_invariant_load_1.ll | 4 +- .../ScopInfo/partially_invariant_load_2.ll | 2 +- .../test/ScopInfo/phi-in-non-affine-region.ll | 2 +- polly/test/ScopInfo/phi_after_error_block.ll | 2 +- .../test/ScopInfo/phi_condition_modeling_1.ll | 2 +- .../test/ScopInfo/phi_condition_modeling_2.ll | 2 +- .../test/ScopInfo/phi_conditional_simple_1.ll | 2 +- polly/test/ScopInfo/phi_loop_carried_float.ll | 2 +- polly/test/ScopInfo/phi_not_grouped_at_top.ll | 2 +- polly/test/ScopInfo/phi_scalar_simple_1.ll | 2 +- polly/test/ScopInfo/phi_scalar_simple_2.ll | 2 +- polly/test/ScopInfo/phi_with_invoke_edge.ll | 2 +- .../ScopInfo/pointer-comparison-no-nsw.ll | 2 +- polly/test/ScopInfo/pointer-comparison.ll | 2 +- .../test/ScopInfo/pointer-type-expressions.ll | 2 +- ...er-used-as-base-pointer-and-scalar-read.ll | 2 +- .../polly-timeout-parameter-bounds.ll | 2 +- polly/test/ScopInfo/pr38218.ll | 2 +- ...eserve-equiv-class-order-in-basic_block.ll | 2 +- .../test/ScopInfo/process_added_dimensions.ll | 2 +- .../test/ScopInfo/pwaff-complexity-bailout.ll | 2 +- polly/test/ScopInfo/ranged_parameter.ll | 2 +- polly/test/ScopInfo/ranged_parameter_2.ll | 3 +- polly/test/ScopInfo/ranged_parameter_wrap.ll | 2 +- .../test/ScopInfo/ranged_parameter_wrap_2.ll | 2 +- .../read-only-scalar-used-in-phi-2.ll | 2 +- .../ScopInfo/read-only-scalar-used-in-phi.ll | 2 +- polly/test/ScopInfo/read-only-scalars.ll | 4 +- polly/test/ScopInfo/read-only-statements.ll | 2 +- .../ScopInfo/reduction_alternating_base.ll | 2 +- ...uction_chain_partially_outside_the_scop.ll | 2 +- .../ScopInfo/reduction_different_index.ll | 2 +- .../ScopInfo/reduction_different_index1.ll | 2 +- .../reduction_disabled_multiplicative.ll | 2 +- polly/test/ScopInfo/reduction_double.ll | 2 +- .../reduction_escaping_intermediate.ll | 2 +- .../reduction_escaping_intermediate_2.ll | 2 +- .../reduction_escaping_intermediate_3.ll | 2 +- polly/test/ScopInfo/reduction_if.ll | 2 +- .../ScopInfo/reduction_indirect_access.ll | 2 +- .../ScopInfo/reduction_indirect_access_2.ll | 2 +- .../reduction_invalid_different_operators.ll | 2 +- .../reduction_invalid_overlapping_accesses.ll | 2 +- .../reduction_long_reduction_chain.ll | 2 +- ...duction_long_reduction_chain_double_use.ll | 2 +- .../reduction_multiple_different_operators.ll | 2 +- .../reduction_multiple_loops_array_sum.ll | 2 +- .../reduction_multiple_loops_array_sum_1.ll | 2 +- .../reduction_multiple_simple_binary.ll | 2 +- .../reduction_non_overlapping_chains.ll | 2 +- .../reduction_only_reduction_like_access.ll | 2 +- polly/test/ScopInfo/reduction_simple_fp.ll | 2 +- .../ScopInfo/reduction_simple_w_constant.ll | 2 +- polly/test/ScopInfo/reduction_simple_w_iv.ll | 2 +- .../ScopInfo/reduction_two_identical_reads.ll | 4 +- .../redundant_parameter_constraint.ll | 2 +- .../test/ScopInfo/region-with-instructions.ll | 2 +- polly/test/ScopInfo/remarks.ll | 3 +- .../required-invariant-loop-bounds.ll | 3 +- .../ScopInfo/restriction_in_dead_block.ll | 2 +- .../run-time-check-many-array-disjuncts.ll | 5 +- .../run-time-check-many-parameters.ll | 2 +- .../run-time-check-many-piecewise-aliasing.ll | 5 +- .../run-time-check-read-only-arrays.ll | 2 +- .../same-base-address-scalar-and-array.ll | 2 +- polly/test/ScopInfo/scalar.ll | 2 +- .../ScopInfo/scalar_dependence_cond_br.ll | 2 +- polly/test/ScopInfo/scalar_to_array.ll | 4 +- .../scev-div-with-evaluatable-divisor.ll | 2 +- polly/test/ScopInfo/scev-invalidated.ll | 2 +- .../schedule-const-post-dominator-walk-2.ll | 2 +- .../schedule-const-post-dominator-walk.ll | 2 +- .../schedule-constuction-endless-loop1.ll | 2 +- .../schedule-constuction-endless-loop2.ll | 2 +- ...tly-contructed-in-case-of-infinite-loop.ll | 2 +- .../scop-affine-parameter-ordering.ll | 2 +- polly/test/ScopInfo/sign_wrapped_set.ll | 2 +- polly/test/ScopInfo/simple_loop_1.ll | 2 +- polly/test/ScopInfo/simple_loop_2.ll | 2 +- polly/test/ScopInfo/simple_loop_unsigned.ll | 2 +- polly/test/ScopInfo/simple_loop_unsigned_2.ll | 2 +- polly/test/ScopInfo/simple_loop_unsigned_3.ll | 2 +- .../ScopInfo/simple_nonaffine_loop_not.ll | 2 +- polly/test/ScopInfo/smax.ll | 2 +- polly/test/ScopInfo/statistics.ll | 2 +- .../stmt_split_exit_of_region_stmt.ll | 2 +- .../ScopInfo/stmt_split_no_after_split.ll | 2 +- .../test/ScopInfo/stmt_split_no_dependence.ll | 2 +- polly/test/ScopInfo/stmt_split_on_store.ll | 2 +- .../ScopInfo/stmt_split_on_synthesizable.ll | 2 +- .../stmt_split_phi_in_beginning_bb.ll | 2 +- polly/test/ScopInfo/stmt_split_phi_in_stmt.ll | 2 +- .../ScopInfo/stmt_split_scalar_dependence.ll | 2 +- polly/test/ScopInfo/stmt_split_within_loop.ll | 2 +- .../stmt_with_read_but_without_sideffect.ll | 2 +- polly/test/ScopInfo/switch-1.ll | 4 +- polly/test/ScopInfo/switch-2.ll | 4 +- polly/test/ScopInfo/switch-3.ll | 4 +- polly/test/ScopInfo/switch-4.ll | 4 +- polly/test/ScopInfo/switch-5.ll | 4 +- polly/test/ScopInfo/switch-6.ll | 4 +- polly/test/ScopInfo/switch-7.ll | 4 +- polly/test/ScopInfo/tempscop-printing.ll | 2 +- .../ScopInfo/test-wrapping-in-condition.ll | 4 +- polly/test/ScopInfo/truncate-1.ll | 2 +- polly/test/ScopInfo/truncate-2.ll | 2 +- polly/test/ScopInfo/truncate-3.ll | 3 +- polly/test/ScopInfo/two-loops-one-infinite.ll | 2 +- .../two-loops-right-after-each-other.ll | 2 +- polly/test/ScopInfo/undef_in_cond.ll | 2 +- polly/test/ScopInfo/unnamed_nonaffine.ll | 4 +- polly/test/ScopInfo/unnamed_stmts.ll | 2 +- .../ScopInfo/unpredictable_nonscop_loop.ll | 2 +- .../test/ScopInfo/unprofitable_scalar-accs.ll | 4 +- polly/test/ScopInfo/unsigned-condition.ll | 2 +- polly/test/ScopInfo/unsigned-division-1.ll | 2 +- polly/test/ScopInfo/unsigned-division-2.ll | 2 +- polly/test/ScopInfo/unsigned-division-3.ll | 2 +- polly/test/ScopInfo/unsigned-division-4.ll | 2 +- polly/test/ScopInfo/unsigned-division-5.ll | 2 +- polly/test/ScopInfo/unsigned_wrap_uge.ll | 2 +- polly/test/ScopInfo/unsigned_wrap_ugt.ll | 2 +- polly/test/ScopInfo/unsigned_wrap_ule.ll | 2 +- polly/test/ScopInfo/unsigned_wrap_ult.ll | 2 +- polly/test/ScopInfo/user_context.ll | 8 +- ...ed_assumptions-in-bb-signed-conditional.ll | 4 +- .../user_provided_assumptions-in-bb-signed.ll | 2 +- ...ser_provided_assumptions-in-bb-unsigned.ll | 4 +- .../ScopInfo/user_provided_assumptions.ll | 4 +- .../ScopInfo/user_provided_assumptions_2.ll | 4 +- .../ScopInfo/user_provided_assumptions_3.ll | 4 +- ...ser_provided_non_dominating_assumptions.ll | 6 +- polly/test/ScopInfo/variant_base_pointer.ll | 4 +- .../ScopInfo/variant_load_empty_domain.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_0.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_1.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_2.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_3.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_4.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_5.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_6.ll | 2 +- polly/test/ScopInfo/wraping_signed_expr_7.ll | 2 +- .../ScopInfo/wraping_signed_expr_slow_1.ll | 2 +- .../ScopInfo/wraping_signed_expr_slow_2.ll | 2 +- polly/test/ScopInfo/zero_ext_of_truncate.ll | 2 +- polly/test/ScopInfo/zero_ext_of_truncate_2.ll | 2 +- .../test/ScopInfo/zero_ext_space_mismatch.ll | 2 +- polly/test/ScopInliner/ignore-declares.ll | 2 +- polly/test/ScopInliner/invariant-load-func.ll | 2 +- polly/test/ScopInliner/simple-inline-loop.ll | 2 +- polly/test/Simplify/coalesce_3partials.ll | 2 +- .../Simplify/coalesce_disjointelements.ll | 2 +- polly/test/Simplify/coalesce_overlapping.ll | 2 +- polly/test/Simplify/coalesce_partial.ll | 2 +- polly/test/Simplify/dead_access_load.ll | 2 +- polly/test/Simplify/dead_access_phi.ll | 2 +- polly/test/Simplify/dead_access_value.ll | 2 +- polly/test/Simplify/dead_instruction.ll | 2 +- polly/test/Simplify/emptyaccessdomain.ll | 2 +- polly/test/Simplify/exit_phi_accesses-2.ll | 2 +- polly/test/Simplify/func-b320a7.ll | 2 +- polly/test/Simplify/gemm.ll | 2 +- .../Simplify/nocoalesce_differentvalues.ll | 2 +- .../Simplify/nocoalesce_elementmismatch.ll | 2 +- polly/test/Simplify/nocoalesce_readbetween.ll | 2 +- .../test/Simplify/nocoalesce_writebetween.ll | 2 +- polly/test/Simplify/notdead_region_exitphi.ll | 2 +- .../test/Simplify/notdead_region_innerphi.ll | 2 +- .../test/Simplify/notredundant_region_loop.ll | 2 +- .../Simplify/notredundant_region_middle.ll | 2 +- .../notredundant_synthesizable_unknownit.ll | 2 +- ...ut-of-scop-use-in-region-entry-phi-node.ll | 2 +- polly/test/Simplify/overwritten.ll | 2 +- polly/test/Simplify/overwritten_3phi.ll | 2 +- polly/test/Simplify/overwritten_3store.ll | 2 +- .../overwritten_implicit_and_explicit.ll | 2 +- .../test/Simplify/overwritten_loadbetween.ll | 2 +- polly/test/Simplify/overwritten_scalar.ll | 2 +- polly/test/Simplify/pass_existence.ll | 2 +- polly/test/Simplify/phi_in_regionstmt.ll | 2 +- polly/test/Simplify/pr33323.ll | 2 +- polly/test/Simplify/redundant.ll | 2 +- .../test/Simplify/redundant_differentindex.ll | 2 +- polly/test/Simplify/redundant_partialwrite.ll | 2 +- polly/test/Simplify/redundant_region.ll | 2 +- .../test/Simplify/redundant_region_scalar.ll | 2 +- polly/test/Simplify/redundant_scalarwrite.ll | 2 +- polly/test/Simplify/redundant_storebetween.ll | 2 +- polly/test/Simplify/scalability1.ll | 2 +- polly/test/Simplify/scalability2.ll | 2 +- polly/test/Simplify/sweep_mapped_phi.ll | 2 +- polly/test/Simplify/sweep_mapped_value.ll | 2 +- .../Simplify/ununsed_read_in_region_entry.ll | 4 +- polly/test/Support/Plugins.ll | 3 +- polly/test/Support/exportjson.ll | 24 +- polly/test/Support/isl-args.ll | 8 +- polly/test/Support/pipelineposition.ll | 8 +- polly/test/lit.site.cfg.in | 4 + polly/test/polly.ll | 2 +- 1143 files changed, 4460 insertions(+), 2700 deletions(-) create mode 100644 polly/include/polly/LinkAllPasses.h delete mode 100644 polly/include/polly/Pass/PhaseManager.h delete mode 100644 polly/include/polly/Pass/PollyFunctionPass.h delete mode 100644 polly/include/polly/Pass/PollyModulePass.h delete mode 100644 polly/lib/Pass/PhaseManager.cpp delete mode 100644 polly/lib/Pass/PollyFunctionPass.cpp delete mode 100644 polly/lib/Pass/PollyModulePass.cpp delete mode 100644 polly/test/ScopInfo/licm_potential_store_mssa.ll diff --git a/polly/docs/ReleaseNotes.rst b/polly/docs/ReleaseNotes.rst index 215a802843304..f5ea47b69cf02 100644 --- a/polly/docs/ReleaseNotes.rst +++ b/polly/docs/ReleaseNotes.rst @@ -13,7 +13,3 @@ In Polly |version| the following important changes have been incorporated. * ScopInliner has been updated for the New Pass Manager. - * Polly now is a monolithic pass split into phases. - - * Polly's support for the legacy pass manager has been removed. - diff --git a/polly/include/polly/Canonicalization.h b/polly/include/polly/Canonicalization.h index 972b660894a1c..03f277e4e91ba 100644 --- a/polly/include/polly/Canonicalization.h +++ b/polly/include/polly/Canonicalization.h @@ -11,6 +11,12 @@ #include "llvm/Passes/PassBuilder.h" +namespace llvm { +namespace legacy { +class PassManagerBase; +} +} // namespace llvm + namespace polly { /// Schedule a set of canonicalization passes to prepare for Polly. @@ -20,6 +26,8 @@ namespace polly { /// into a canonical form that simplifies the analysis and optimization passes /// of Polly. The set of optimization passes scheduled here is probably not yet /// optimal. TODO: Optimize the set of canonicalization passes. +void registerCanonicalicationPasses(llvm::legacy::PassManagerBase &PM); + llvm::FunctionPassManager buildCanonicalicationPassesForNPM(llvm::ModulePassManager &MPM, llvm::OptimizationLevel Level); diff --git a/polly/include/polly/CodeGen/CodeGeneration.h b/polly/include/polly/CodeGen/CodeGeneration.h index 2340fbe016b49..57aec1d70cc72 100644 --- a/polly/include/polly/CodeGen/CodeGeneration.h +++ b/polly/include/polly/CodeGen/CodeGeneration.h @@ -14,7 +14,6 @@ #include "llvm/IR/PassManager.h" namespace polly { -class IslAstInfo; enum VectorizerChoice { VECTORIZER_NONE, @@ -34,8 +33,6 @@ struct CodeGenerationPass final : PassInfoMixin { }; extern bool PerfMonitoring; - -bool runCodeGeneration(Scop &S, llvm::RegionInfo &RI, IslAstInfo &AI); } // namespace polly #endif // POLLY_CODEGENERATION_H diff --git a/polly/include/polly/CodeGen/IslAst.h b/polly/include/polly/CodeGen/IslAst.h index 3e1ff2c8a24da..c99a4957d6b48 100644 --- a/polly/include/polly/CodeGen/IslAst.h +++ b/polly/include/polly/CodeGen/IslAst.h @@ -21,7 +21,6 @@ #ifndef POLLY_ISLAST_H #define POLLY_ISLAST_H -#include "polly/DependenceInfo.h" #include "polly/ScopPass.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/IR/PassManager.h" @@ -173,6 +172,33 @@ struct IslAstAnalysis : AnalysisInfoMixin { ScopStandardAnalysisResults &SAR); }; +class IslAstInfoWrapperPass final : public ScopPass { + std::unique_ptr Ast; + +public: + static char ID; + + IslAstInfoWrapperPass() : ScopPass(ID) {} + + IslAstInfo &getAI() { return *Ast; } + const IslAstInfo &getAI() const { return *Ast; } + + /// Build the AST for the given SCoP @p S. + bool runOnScop(Scop &S) override; + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; + + /// Release the internal memory. + void releaseMemory() override; + + /// Print a source code representation of the program. + void printScop(raw_ostream &OS, Scop &S) const override; +}; + +llvm::Pass *createIslAstInfoWrapperPassPass(); +llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS); + struct IslAstPrinterPass final : PassInfoMixin { IslAstPrinterPass(raw_ostream &OS) : OS(OS) {} @@ -181,9 +207,11 @@ struct IslAstPrinterPass final : PassInfoMixin { raw_ostream &OS; }; - -std::unique_ptr runIslAstGen(Scop &S, - DependenceAnalysis::Result &DA); } // namespace polly +namespace llvm { +void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &); +void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif // POLLY_ISLAST_H diff --git a/polly/include/polly/CodePreparation.h b/polly/include/polly/CodePreparation.h index 1a15e3d4d5a29..c6bc526db209d 100644 --- a/polly/include/polly/CodePreparation.h +++ b/polly/include/polly/CodePreparation.h @@ -15,12 +15,6 @@ #include "llvm/IR/PassManager.h" -namespace llvm { -class DominatorTree; -class LoopInfo; -class RegionInfo; -} // namespace llvm - namespace polly { struct CodePreparationPass final : llvm::PassInfoMixin { llvm::PreservedAnalyses run(llvm::Function &F, diff --git a/polly/include/polly/DeLICM.h b/polly/include/polly/DeLICM.h index 63fc509e0bd46..0e03c04079480 100644 --- a/polly/include/polly/DeLICM.h +++ b/polly/include/polly/DeLICM.h @@ -21,10 +21,15 @@ #include "isl/isl-noexceptions.h" namespace llvm { +class PassRegistry; +class Pass; class raw_ostream; } // namespace llvm namespace polly { +/// Create a new DeLICM pass instance. +llvm::Pass *createDeLICMWrapperPass(); +llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS); struct DeLICMPass final : llvm::PassInfoMixin { DeLICMPass() {} @@ -54,7 +59,11 @@ bool isConflicting(isl::union_set ExistingOccupied, isl::union_map ProposedWrites, llvm::raw_ostream *OS = nullptr, unsigned Indent = 0); -bool runDeLICM(Scop &S); } // namespace polly +namespace llvm { +void initializeDeLICMWrapperPassPass(llvm::PassRegistry &); +void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_DELICM_H */ diff --git a/polly/include/polly/DeadCodeElimination.h b/polly/include/polly/DeadCodeElimination.h index 4d8da56c76eec..d416afa030c56 100644 --- a/polly/include/polly/DeadCodeElimination.h +++ b/polly/include/polly/DeadCodeElimination.h @@ -13,10 +13,16 @@ #ifndef POLLY_DEADCODEELIMINATION_H #define POLLY_DEADCODEELIMINATION_H -#include "polly/DependenceInfo.h" #include "polly/ScopPass.h" +namespace llvm { +class PassRegistry; +class Pass; +class raw_ostream; +} // namespace llvm + namespace polly { +llvm::Pass *createDeadCodeElimWrapperPass(); struct DeadCodeElimPass final : llvm::PassInfoMixin { DeadCodeElimPass() {} @@ -25,7 +31,10 @@ struct DeadCodeElimPass final : llvm::PassInfoMixin { ScopStandardAnalysisResults &SAR, SPMUpdater &U); }; -bool runDeadCodeElim(Scop &S, DependenceAnalysis::Result &DA); } // namespace polly +namespace llvm { +void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_DEADCODEELIMINATION_H */ diff --git a/polly/include/polly/DependenceInfo.h b/polly/include/polly/DependenceInfo.h index 88ea468dd5473..d562ad80592f2 100644 --- a/polly/include/polly/DependenceInfo.h +++ b/polly/include/polly/DependenceInfo.h @@ -145,6 +145,7 @@ class Dependences final { friend struct DependenceAnalysis; friend struct DependenceInfoPrinterPass; friend class DependenceInfo; + friend class DependenceInfoWrapperPass; /// Destructor that will free internal objects. ~Dependences() { releaseMemory(); } @@ -191,8 +192,6 @@ class Dependences final { const AnalysisLevel Level; }; -extern Dependences::AnalysisLevel OptAnalysisLevel; - struct DependenceAnalysis final : public AnalysisInfoMixin { static AnalysisKey Key; struct Result { @@ -233,7 +232,108 @@ struct DependenceInfoPrinterPass final raw_ostream &OS; }; -DependenceAnalysis::Result runDependenceAnalysis(Scop &S); +class DependenceInfo final : public ScopPass { +public: + static char ID; + + /// Construct a new DependenceInfo pass. + DependenceInfo() : ScopPass(ID) {} + + /// Return the dependence information for the current SCoP. + /// + /// @param Level The granularity of dependence analysis result. + /// + /// @return The dependence analysis result + /// + const Dependences &getDependences(Dependences::AnalysisLevel Level); + + /// Recompute dependences from schedule and memory accesses. + const Dependences &recomputeDependences(Dependences::AnalysisLevel Level); + + /// Invalidate the dependence information and recompute it when needed again. + /// May be required when the underlying Scop was changed in a way that would + /// add new dependencies (e.g. between new statement instances insierted into + /// the SCoP) or intentionally breaks existing ones. It is not required when + /// updating the schedule that conforms the existing dependencies. + void abandonDependences(); + + /// Compute the dependence information for the SCoP @p S. + bool runOnScop(Scop &S) override; + + /// Print the dependences for the given SCoP to @p OS. + void printScop(raw_ostream &OS, Scop &) const override; + + /// Release the internal memory. + void releaseMemory() override { + for (auto &d : D) + d.reset(); + } + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; + +private: + Scop *S; + + /// Dependences struct for the current SCoP. + std::unique_ptr D[Dependences::NumAnalysisLevels]; +}; + +llvm::Pass *createDependenceInfoPass(); +llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS); + +/// Construct a new DependenceInfoWrapper pass. +class DependenceInfoWrapperPass final : public FunctionPass { +public: + static char ID; + + /// Construct a new DependenceInfoWrapper pass. + DependenceInfoWrapperPass() : FunctionPass(ID) {} + + /// Return the dependence information for the given SCoP. + /// + /// @param S SCoP object. + /// @param Level The granularity of dependence analysis result. + /// + /// @return The dependence analysis result + /// + const Dependences &getDependences(Scop *S, Dependences::AnalysisLevel Level); + + /// Recompute dependences from schedule and memory accesses. + const Dependences &recomputeDependences(Scop *S, + Dependences::AnalysisLevel Level); + + /// Compute the dependence information on-the-fly for the function. + bool runOnFunction(Function &F) override; + + /// Print the dependences for the current function to @p OS. + void print(raw_ostream &OS, const Module *M = nullptr) const override; + + /// Release the internal memory. + void releaseMemory() override { ScopToDepsMap.clear(); } + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; + +private: + using ScopToDepsMapTy = DenseMap>; + + /// Scop to Dependence map for the current function. + ScopToDepsMapTy ScopToDepsMap; +}; + +llvm::Pass *createDependenceInfoWrapperPassPass(); +llvm::Pass * +createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); + } // namespace polly +namespace llvm { +void initializeDependenceInfoPass(llvm::PassRegistry &); +void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &); +void initializeDependenceInfoPrinterLegacyFunctionPassPass( + llvm::PassRegistry &); +} // namespace llvm + #endif diff --git a/polly/include/polly/FlattenSchedule.h b/polly/include/polly/FlattenSchedule.h index 154344d2f5c3e..3ef3c304243df 100644 --- a/polly/include/polly/FlattenSchedule.h +++ b/polly/include/polly/FlattenSchedule.h @@ -15,10 +15,20 @@ #ifndef POLLY_FLATTENSCHEDULE_H #define POLLY_FLATTENSCHEDULE_H -namespace polly { -class Scop; +namespace llvm { +class PassRegistry; +class Pass; +class raw_ostream; +} // namespace llvm -void runFlattenSchedulePass(Scop &S); +namespace polly { +llvm::Pass *createFlattenSchedulePass(); +llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS); } // namespace polly +namespace llvm { +void initializeFlattenSchedulePass(llvm::PassRegistry &); +void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_FLATTENSCHEDULE_H */ diff --git a/polly/include/polly/ForwardOpTree.h b/polly/include/polly/ForwardOpTree.h index 8b2ece1f08e15..b5da0f513ab78 100644 --- a/polly/include/polly/ForwardOpTree.h +++ b/polly/include/polly/ForwardOpTree.h @@ -15,7 +15,13 @@ #include "polly/ScopPass.h" +namespace llvm { +class PassRegistry; +} // namespace llvm + namespace polly { +llvm::Pass *createForwardOpTreeWrapperPass(); +llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS); struct ForwardOpTreePass final : llvm::PassInfoMixin { ForwardOpTreePass() {} @@ -35,15 +41,11 @@ struct ForwardOpTreePrinterPass final llvm::raw_ostream &OS; }; -/// Pass that redirects scalar reads to array elements that are known to contain -/// the same value. -/// -/// This reduces the number of scalar accesses and therefore potentially -/// increases the freedom of the scheduler. In the ideal case, all reads of a -/// scalar definition are redirected (We currently do not care about removing -/// the write in this case). This is also useful for the main DeLICM pass as -/// there are less scalars to be mapped. -bool runForwardOpTree(Scop &S); } // namespace polly +namespace llvm { +void initializeForwardOpTreeWrapperPassPass(PassRegistry &); +void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &); +} // namespace llvm + #endif // POLLY_FORWARDOPTREE_H diff --git a/polly/include/polly/JSONExporter.h b/polly/include/polly/JSONExporter.h index 82a881c737064..958f95ea11404 100644 --- a/polly/include/polly/JSONExporter.h +++ b/polly/include/polly/JSONExporter.h @@ -9,11 +9,13 @@ #ifndef POLLY_JSONEXPORTER_H #define POLLY_JSONEXPORTER_H -#include "polly/DependenceInfo.h" #include "polly/ScopPass.h" #include "llvm/IR/PassManager.h" namespace polly { +llvm::Pass *createJSONExporterPass(); +llvm::Pass *createJSONImporterPass(); +llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS); /// This pass exports a scop to a jscop file. The filename is generated from the /// concatenation of the function and scop name. @@ -28,9 +30,12 @@ struct JSONImportPass final : llvm::PassInfoMixin { llvm::PreservedAnalyses run(Scop &, ScopAnalysisManager &, ScopStandardAnalysisResults &, SPMUpdater &); }; - -void runImportJSON(Scop &S, DependenceAnalysis::Result &DA); -void runExportJSON(Scop &S); } // namespace polly +namespace llvm { +void initializeJSONExporterPass(llvm::PassRegistry &); +void initializeJSONImporterPass(llvm::PassRegistry &); +void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_JSONEXPORTER_H */ diff --git a/polly/include/polly/LinkAllPasses.h b/polly/include/polly/LinkAllPasses.h new file mode 100644 index 0000000000000..9978344c73e9f --- /dev/null +++ b/polly/include/polly/LinkAllPasses.h @@ -0,0 +1,156 @@ +//===- polly/LinkAllPasses.h ----------- Reference All Passes ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This header file pulls in all transformation and analysis passes for tools +// like opt and bugpoint that need this functionality. +// +//===----------------------------------------------------------------------===// + +#ifndef POLLY_LINKALLPASSES_H +#define POLLY_LINKALLPASSES_H + +#include "polly/Config/config.h" +#include "polly/Support/DumpFunctionPass.h" +#include "polly/Support/DumpModulePass.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/AlwaysTrue.h" + +namespace llvm { +class Pass; +class PassRegistry; +} // namespace llvm + +namespace polly { +llvm::Pass *createCodePreparationPass(); +llvm::Pass *createScopInlinerPass(); +llvm::Pass *createDeadCodeElimWrapperPass(); +llvm::Pass *createDependenceInfoPass(); +llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createDependenceInfoWrapperPassPass(); +llvm::Pass * +createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); +llvm::Pass *createDOTOnlyPrinterWrapperPass(); +llvm::Pass *createDOTOnlyViewerWrapperPass(); +llvm::Pass *createDOTPrinterWrapperPass(); +llvm::Pass *createDOTViewerWrapperPass(); +llvm::Pass *createJSONExporterPass(); +llvm::Pass *createJSONImporterPass(); +llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createPollyCanonicalizePass(); +llvm::Pass *createScopDetectionWrapperPassPass(); +llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createScopInfoRegionPassPass(); +llvm::Pass *createScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS); +llvm::Pass *createScopInfoWrapperPassPass(); +llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); +llvm::Pass *createIslAstInfoWrapperPassPass(); +llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createCodeGenerationPass(); +llvm::Pass *createIslScheduleOptimizerWrapperPass(); +llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createFlattenSchedulePass(); +llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createForwardOpTreeWrapperPass(); +llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createDeLICMWrapperPass(); +llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createMaximalStaticExpansionPass(); +llvm::Pass *createSimplifyWrapperPass(int); +llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS); +llvm::Pass *createPruneUnprofitableWrapperPass(); + +extern char &CodePreparationID; +} // namespace polly + +namespace { +struct PollyForcePassLinking { + PollyForcePassLinking() { + // We must reference the passes in such a way that compilers will not delete + // it all as dead code, even with whole program optimization, yet is + // effectively a NO-OP. + if (llvm::getNonFoldableAlwaysTrue()) + return; + + polly::createCodePreparationPass(); + polly::createDeadCodeElimWrapperPass(); + polly::createDependenceInfoPass(); + polly::createDependenceInfoPrinterLegacyPass(llvm::outs()); + polly::createDependenceInfoWrapperPassPass(); + polly::createDependenceInfoPrinterLegacyFunctionPass(llvm::outs()); + polly::createDOTOnlyPrinterWrapperPass(); + polly::createDOTOnlyViewerWrapperPass(); + polly::createDOTPrinterWrapperPass(); + polly::createDOTViewerWrapperPass(); + polly::createJSONExporterPass(); + polly::createJSONImporterPass(); + polly::createJSONImporterPrinterLegacyPass(llvm::outs()); + polly::createScopDetectionWrapperPassPass(); + polly::createScopDetectionPrinterLegacyPass(llvm::outs()); + polly::createScopInfoRegionPassPass(); + polly::createScopInfoPrinterLegacyRegionPass(llvm::outs()); + polly::createScopInfoWrapperPassPass(); + polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs()); + polly::createPollyCanonicalizePass(); + polly::createIslAstInfoWrapperPassPass(); + polly::createIslAstInfoPrinterLegacyPass(llvm::outs()); + polly::createCodeGenerationPass(); + polly::createIslScheduleOptimizerWrapperPass(); + polly::createIslScheduleOptimizerPrinterLegacyPass(llvm::outs()); + polly::createMaximalStaticExpansionPass(); + polly::createFlattenSchedulePass(); + polly::createFlattenSchedulePrinterLegacyPass(llvm::errs()); + polly::createForwardOpTreeWrapperPass(); + polly::createForwardOpTreePrinterLegacyPass(llvm::errs()); + polly::createDeLICMWrapperPass(); + polly::createDeLICMPrinterLegacyPass(llvm::outs()); + polly::createDumpModuleWrapperPass("", true); + polly::createDumpFunctionWrapperPass(""); + polly::createSimplifyWrapperPass(0); + polly::createSimplifyPrinterLegacyPass(llvm::outs()); + polly::createPruneUnprofitableWrapperPass(); + } +} PollyForcePassLinking; // Force link by creating a global definition. +} // namespace + +namespace llvm { +void initializeCodePreparationPass(llvm::PassRegistry &); +void initializeScopInlinerWrapperPassPass(llvm::PassRegistry &); +void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &); +void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeScopInfoRegionPassPass(PassRegistry &); +void initializeScopInfoPrinterLegacyRegionPassPass(llvm::PassRegistry &); +void initializeScopInfoWrapperPassPass(PassRegistry &); +void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &); +void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &); +void initializeJSONExporterPass(llvm::PassRegistry &); +void initializeJSONImporterPass(llvm::PassRegistry &); +void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeDependenceInfoPass(llvm::PassRegistry &); +void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &); +void initializeDependenceInfoPrinterLegacyFunctionPassPass( + llvm::PassRegistry &); +void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &); +void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeCodeGenerationPass(llvm::PassRegistry &); +void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &); +void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeMaximalStaticExpanderWrapperPassPass(llvm::PassRegistry &); +void initializePollyCanonicalizePass(llvm::PassRegistry &); +void initializeFlattenSchedulePass(llvm::PassRegistry &); +void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &); +void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &); +void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &); +void initializeDeLICMWrapperPassPass(llvm::PassRegistry &); +void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &); +void initializeSimplifyWrapperPassPass(llvm::PassRegistry &); +void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &); +void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &); +} // namespace llvm + +#endif diff --git a/polly/include/polly/MaximalStaticExpansion.h b/polly/include/polly/MaximalStaticExpansion.h index 1f9fbcb1d6a70..88827b2700887 100644 --- a/polly/include/polly/MaximalStaticExpansion.h +++ b/polly/include/polly/MaximalStaticExpansion.h @@ -14,7 +14,6 @@ #ifndef POLLY_MAXIMALSTATICEXPANSION_H #define POLLY_MAXIMALSTATICEXPANSION_H -#include "polly/DependenceInfo.h" #include "polly/ScopPass.h" #include "llvm/IR/PassManager.h" @@ -38,7 +37,6 @@ struct MaximalStaticExpansionPrinterPass llvm::raw_ostream &OS; }; -void runMaximalStaticExpansion(Scop &S, DependenceAnalysis::Result &DI); } // namespace polly #endif /* POLLY_MAXIMALSTATICEXPANSION_H */ diff --git a/polly/include/polly/Pass/PhaseManager.h b/polly/include/polly/Pass/PhaseManager.h deleted file mode 100644 index 9ff9bbf02d71f..0000000000000 --- a/polly/include/polly/Pass/PhaseManager.h +++ /dev/null @@ -1,127 +0,0 @@ -//===------ PhaseManager.h --------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// Implements the sequence of operations on SCoPs, called phases. It is itelf -// not a pass in either pass manager, but used from PollyFunctionPass or -// PollyModulePass. -// -//===----------------------------------------------------------------------===// - -#ifndef POLLY_PASS_PHASEMANAGER_H_ -#define POLLY_PASS_PHASEMANAGER_H_ - -#include "polly/DependenceInfo.h" -#include "llvm/ADT/Bitset.h" -#include - -namespace llvm { -class Function; -class Error; -} // namespace llvm - -namespace polly { - -/// Phases (in execution order) within the Polly pass. -enum class PassPhase { - None, - - Prepare, - - Detection, - PrintDetect, - DotScops, - DotScopsOnly, - ViewScops, - ViewScopsOnly, - - ScopInfo, - PrintScopInfo, - - Flatten, - - Dependences, - PrintDependences, - - ImportJScop, - Simplify0, - Optree, - DeLICM, - Simplify1, - DeadCodeElimination, - MaximumStaticExtension, - PruneUnprofitable, - Optimization, - ExportJScop, - AstGen, - CodeGen, - - PassPhaseFirst = Prepare, - PassPhaseLast = CodeGen -}; - -StringRef getPhaseName(PassPhase Phase); -PassPhase parsePhase(StringRef Name); -bool dependsOnDependenceInfo(PassPhase Phase); - -/// Options for the Polly pass. -class PollyPassOptions { - /// For each Polly phase, whether it should be executed. - /// Since PassPhase::None is unused, bit positions are shifted by one. - llvm::Bitset(PassPhase::PassPhaseLast) - - static_cast(PassPhase::PassPhaseFirst) + 1> - PhaseEnabled; - -public: - bool ViewAll = false; - std::string ViewFilter; - Dependences::AnalysisLevel PrintDepsAnalysisLevel = Dependences::AL_Statement; - - bool isPhaseEnabled(PassPhase Phase) const { - assert(Phase != PassPhase::None); - unsigned BitPos = static_cast(Phase) - - static_cast(PassPhase::PassPhaseFirst); - return PhaseEnabled[BitPos]; - } - - void setPhaseEnabled(PassPhase Phase, bool Enabled = true) { - assert(Phase != PassPhase::None); - unsigned BitPos = static_cast(Phase) - - static_cast(PassPhase::PassPhaseFirst); - if (Enabled) - PhaseEnabled.set(BitPos); - else - PhaseEnabled.reset(BitPos); - } - - /// Enable all phases that are necessary for a roundtrip from LLVM-IR back to - /// LLVM-IR. - void enableEnd2End(); - - /// Enabled the default optimization phases. - void enableDefaultOpts(); - - /// Disable all phases following \p Phase. - /// Useful when regression testing that particular phase and everything after - /// it is not of interest. - void disableAfter(PassPhase Phase); - - /// Check whether the options are coherent relative to each other. - llvm::Error checkConsistency() const; -}; - -/// Run Polly and its phases on \p F. -bool runPollyPass(Function &F, llvm::FunctionAnalysisManager &FAM, - PollyPassOptions Opts); -} // namespace polly - -/// Make llvm::enum_seq work. -template <> struct llvm::enum_iteration_traits { - static constexpr bool is_iterable = true; -}; - -#endif /* POLLY_PASS_PHASEMANAGER_H_ */ diff --git a/polly/include/polly/Pass/PollyFunctionPass.h b/polly/include/polly/Pass/PollyFunctionPass.h deleted file mode 100644 index dd0d4e77d7a80..0000000000000 --- a/polly/include/polly/Pass/PollyFunctionPass.h +++ /dev/null @@ -1,32 +0,0 @@ -//===------ PollyFunctionPass.h - Polly function pass ---------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef POLLY_PASS_POLLYFUNCTIONPASS_H_ -#define POLLY_PASS_POLLYFUNCTIONPASS_H_ - -#include "polly/Pass/PhaseManager.h" -#include "llvm/IR/Analysis.h" -#include "llvm/IR/PassManager.h" -#include - -namespace polly { - -class PollyFunctionPass : public llvm::PassInfoMixin { -public: - PollyFunctionPass() {} - PollyFunctionPass(PollyPassOptions Opts) : Opts(std::move(Opts)) {} - - llvm::PreservedAnalyses run(llvm::Function &F, - llvm::FunctionAnalysisManager &); - -private: - PollyPassOptions Opts; -}; -} // namespace polly - -#endif /* POLLY_PASS_POLLYFUNCTIONPASS_H_ */ diff --git a/polly/include/polly/Pass/PollyModulePass.h b/polly/include/polly/Pass/PollyModulePass.h deleted file mode 100644 index 2214bbf3d143e..0000000000000 --- a/polly/include/polly/Pass/PollyModulePass.h +++ /dev/null @@ -1,30 +0,0 @@ -//===------ PollyModulePass.h - Polly module pass -------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef POLLY_PASS_POLLYMODULEPASS_H_ -#define POLLY_PASS_POLLYMODULEPASS_H_ - -#include "polly/Pass/PhaseManager.h" -#include "llvm/IR/PassManager.h" - -namespace polly { - -class PollyModulePass : public llvm::PassInfoMixin { -public: - PollyModulePass() {} - PollyModulePass(PollyPassOptions Opts) : Opts(std::move(Opts)) {} - - llvm::PreservedAnalyses run(llvm::Module &M, llvm::ModuleAnalysisManager &); - -private: - PollyPassOptions Opts; -}; - -} // namespace polly - -#endif /* POLLY_PASS_POLLYMODULEPASS_H_ */ diff --git a/polly/include/polly/PruneUnprofitable.h b/polly/include/polly/PruneUnprofitable.h index 16b76cc62f1d2..2d285cce69ad4 100644 --- a/polly/include/polly/PruneUnprofitable.h +++ b/polly/include/polly/PruneUnprofitable.h @@ -15,7 +15,13 @@ #include "polly/ScopPass.h" +namespace llvm { +class Pass; +class PassRegistry; +} // namespace llvm + namespace polly { +llvm::Pass *createPruneUnprofitableWrapperPass(); struct PruneUnprofitablePass final : llvm::PassInfoMixin { @@ -24,8 +30,10 @@ struct PruneUnprofitablePass final llvm::PreservedAnalyses run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &U); }; - -bool runPruneUnprofitable(Scop &S); } // namespace polly +namespace llvm { +void initializePruneUnprofitableWrapperPassPass(PassRegistry &); +} + #endif // POLLY_PRUNEUNPROFITABLE_H diff --git a/polly/include/polly/RegisterPasses.h b/polly/include/polly/RegisterPasses.h index 7819462cb0c36..3a81e1ba7487d 100644 --- a/polly/include/polly/RegisterPasses.h +++ b/polly/include/polly/RegisterPasses.h @@ -14,6 +14,7 @@ #define POLLY_REGISTER_PASSES_H namespace llvm { +class PassRegistry; class PassBuilder; struct PassPluginLibraryInfo; namespace legacy { @@ -22,6 +23,7 @@ class PassManagerBase; } // namespace llvm namespace polly { +void initializePollyPasses(llvm::PassRegistry &Registry); void registerPollyPasses(llvm::PassBuilder &PB); } // namespace polly diff --git a/polly/include/polly/ScheduleOptimizer.h b/polly/include/polly/ScheduleOptimizer.h index ac45572ba7ed5..3e17eeff49ae3 100644 --- a/polly/include/polly/ScheduleOptimizer.h +++ b/polly/include/polly/ScheduleOptimizer.h @@ -9,10 +9,16 @@ #ifndef POLLY_SCHEDULEOPTIMIZER_H #define POLLY_SCHEDULEOPTIMIZER_H -#include "polly/DependenceInfo.h" #include "polly/ScopPass.h" +namespace llvm { +class Pass; +class PassRegistry; +} // namespace llvm + namespace polly { +llvm::Pass *createIslScheduleOptimizerWrapperPass(); +llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS); struct IslScheduleOptimizerPass final : llvm::PassInfoMixin { @@ -32,9 +38,11 @@ struct IslScheduleOptimizerPrinterPass final private: llvm::raw_ostream &OS; }; - -void runIslScheduleOptimizer(Scop &S, llvm::TargetTransformInfo *TTI, - DependenceAnalysis::Result &Deps); } // namespace polly +namespace llvm { +void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &); +void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif // POLLY_SCHEDULEOPTIMIZER_H diff --git a/polly/include/polly/ScopDetection.h b/polly/include/polly/ScopDetection.h index ded1c88206430..5759f75463284 100644 --- a/polly/include/polly/ScopDetection.h +++ b/polly/include/polly/ScopDetection.h @@ -52,6 +52,7 @@ #include "llvm/Analysis/AliasSetTracker.h" #include "llvm/Analysis/RegionInfo.h" #include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm/Pass.h" #include namespace polly { @@ -67,6 +68,7 @@ using llvm::DenseMap; using llvm::DominatorTree; using llvm::Function; using llvm::FunctionAnalysisManager; +using llvm::FunctionPass; using llvm::IntrinsicInst; using llvm::LoopInfo; using llvm::Module; @@ -629,6 +631,31 @@ struct ScopAnalysisPrinterPass final : PassInfoMixin { raw_ostream &OS; }; + +class ScopDetectionWrapperPass final : public FunctionPass { + std::unique_ptr Result; + +public: + ScopDetectionWrapperPass(); + + /// @name FunctionPass interface + ///@{ + static char ID; + void getAnalysisUsage(AnalysisUsage &AU) const override; + void releaseMemory() override; + bool runOnFunction(Function &F) override; + void print(raw_ostream &OS, const Module *M = nullptr) const override; + ///@} + + ScopDetection &getSD() const { return *Result; } +}; + +llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS); } // namespace polly +namespace llvm { +void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &); +void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif // POLLY_SCOPDETECTION_H diff --git a/polly/include/polly/ScopGraphPrinter.h b/polly/include/polly/ScopGraphPrinter.h index c4e669f0c3503..b57732ad3d70d 100644 --- a/polly/include/polly/ScopGraphPrinter.h +++ b/polly/include/polly/ScopGraphPrinter.h @@ -70,9 +70,6 @@ struct DOTGraphTraits : DOTGraphTraits { namespace polly { -extern std::string ViewFilter; -extern bool ViewAll; - struct ScopViewer final : llvm::DOTGraphTraitsViewer { ScopViewer() : llvm::DOTGraphTraitsViewer("scops") {} diff --git a/polly/include/polly/ScopInfo.h b/polly/include/polly/ScopInfo.h index 7541ddc21e39f..f700144165d53 100644 --- a/polly/include/polly/ScopInfo.h +++ b/polly/include/polly/ScopInfo.h @@ -23,11 +23,13 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/MapVector.h" #include "llvm/ADT/SetVector.h" +#include "llvm/Analysis/RegionPass.h" #include "llvm/IR/DebugLoc.h" #include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/ValueHandle.h" +#include "llvm/Pass.h" #include "isl/isl-noexceptions.h" #include #include @@ -53,6 +55,8 @@ using llvm::MemIntrinsic; using llvm::PassInfoMixin; using llvm::PHINode; using llvm::RegionNode; +using llvm::RegionPass; +using llvm::RGPassManager; using llvm::SetVector; using llvm::SmallPtrSetImpl; using llvm::SmallVector; @@ -2670,6 +2674,39 @@ class Scop final { /// Print Scop scop to raw_ostream OS. raw_ostream &operator<<(raw_ostream &OS, const Scop &scop); +/// The legacy pass manager's analysis pass to compute scop information +/// for a region. +class ScopInfoRegionPass final : public RegionPass { + /// The Scop pointer which is used to construct a Scop. + std::unique_ptr S; + +public: + static char ID; // Pass identification, replacement for typeid + + ScopInfoRegionPass() : RegionPass(ID) {} + ~ScopInfoRegionPass() override = default; + + /// Build Scop object, the Polly IR of static control + /// part for the current SESE-Region. + /// + /// @return If the current region is a valid for a static control part, + /// return the Polly IR representing this static control part, + /// return null otherwise. + Scop *getScop() { return S.get(); } + const Scop *getScop() const { return S.get(); } + + /// Calculate the polyhedral scop information for a given Region. + bool runOnRegion(Region *R, RGPassManager &RGM) override; + + void releaseMemory() override { S.reset(); } + + void print(raw_ostream &O, const Module *M = nullptr) const override; + + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; + +llvm::Pass *createScopInfoPrinterLegacyRegionPass(raw_ostream &OS); + class ScopInfo { public: using RegionToScopMapTy = MapVector>; @@ -2744,6 +2781,45 @@ struct ScopInfoPrinterPass final : PassInfoMixin { raw_ostream &Stream; }; + +//===----------------------------------------------------------------------===// +/// The legacy pass manager's analysis pass to compute scop information +/// for the whole function. +/// +/// This pass will maintain a map of the maximal region within a scop to its +/// scop object for all the feasible scops present in a function. +/// This pass is an alternative to the ScopInfoRegionPass in order to avoid a +/// region pass manager. +class ScopInfoWrapperPass final : public FunctionPass { + std::unique_ptr Result; + +public: + ScopInfoWrapperPass() : FunctionPass(ID) {} + ~ScopInfoWrapperPass() override = default; + + static char ID; // Pass identification, replacement for typeid + + ScopInfo *getSI() { return Result.get(); } + const ScopInfo *getSI() const { return Result.get(); } + + /// Calculate all the polyhedral scops for a given function. + bool runOnFunction(Function &F) override; + + void releaseMemory() override { Result.reset(); } + + void print(raw_ostream &O, const Module *M = nullptr) const override; + + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; + +llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); } // end namespace polly +namespace llvm { +void initializeScopInfoRegionPassPass(PassRegistry &); +void initializeScopInfoPrinterLegacyRegionPassPass(PassRegistry &); +void initializeScopInfoWrapperPassPass(PassRegistry &); +void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &); +} // end namespace llvm + #endif // POLLY_SCOPINFO_H diff --git a/polly/include/polly/ScopInliner.h b/polly/include/polly/ScopInliner.h index ae1938f03ac70..014667804330f 100644 --- a/polly/include/polly/ScopInliner.h +++ b/polly/include/polly/ScopInliner.h @@ -23,6 +23,12 @@ class ScopInlinerPass : public llvm::PassInfoMixin { llvm::LazyCallGraph &CG, llvm::CGSCCUpdateResult &UR); }; + +llvm::Pass *createScopInlinerWrapperPass(); } // namespace polly +namespace llvm { +void initializeScopInlinerWrapperPassPass(llvm::PassRegistry &); +} + #endif /* POLLY_POLLYINLINER_H */ diff --git a/polly/include/polly/ScopPass.h b/polly/include/polly/ScopPass.h index 80ccd5717f96c..144cfd1364393 100644 --- a/polly/include/polly/ScopPass.h +++ b/polly/include/polly/ScopPass.h @@ -19,6 +19,7 @@ #include "polly/ScopInfo.h" #include "llvm/ADT/PriorityWorklist.h" +#include "llvm/Analysis/RegionPass.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/PassManagerImpl.h" @@ -154,6 +155,33 @@ using ScopPassManager = PassManager; +/// ScopPass - This class adapts the RegionPass interface to allow convenient +/// creation of passes that operate on the Polly IR. Instead of overriding +/// runOnRegion, subclasses override runOnScop. +class ScopPass : public RegionPass { + Scop *S; + +protected: + explicit ScopPass(char &ID) : RegionPass(ID), S(nullptr) {} + + /// runOnScop - This method must be overloaded to perform the + /// desired Polyhedral transformation or analysis. + /// + virtual bool runOnScop(Scop &S) = 0; + + /// Print method for SCoPs. + virtual void printScop(raw_ostream &OS, Scop &S) const {} + + /// getAnalysisUsage - Subclasses that override getAnalysisUsage + /// must call this. + /// + void getAnalysisUsage(AnalysisUsage &AU) const override; + +private: + bool runOnRegion(Region *R, RGPassManager &RGM) override; + void print(raw_ostream &OS, const Module *) const override; +}; + struct ScopStandardAnalysisResults { DominatorTree &DT; ScopInfo &SI; diff --git a/polly/include/polly/Simplify.h b/polly/include/polly/Simplify.h index 4565eb26edaf0..b2aa58d850fae 100644 --- a/polly/include/polly/Simplify.h +++ b/polly/include/polly/Simplify.h @@ -16,6 +16,11 @@ #include "polly/ScopPass.h" #include "llvm/ADT/SmallVector.h" +namespace llvm { +class PassRegistry; +class Pass; +} // namespace llvm + namespace polly { class MemoryAccess; class ScopStmt; @@ -36,6 +41,17 @@ class ScopStmt; /// undefined. llvm::SmallVector getAccessesInOrder(ScopStmt &Stmt); +/// Create a Simplify pass +/// +/// @param CallNo Disambiguates this instance for when there are multiple +/// instances of this pass in the pass manager. It is used only to +/// keep the statistics apart and has no influence on the +/// simplification itself. +/// +/// @return The Simplify pass. +llvm::Pass *createSimplifyWrapperPass(int CallNo = 0); +llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS); + struct SimplifyPass final : PassInfoMixin { SimplifyPass(int CallNo = 0) : CallNo(CallNo) {} @@ -57,8 +73,11 @@ struct SimplifyPrinterPass final : PassInfoMixin { raw_ostream &OS; int CallNo; }; - -bool runSimplify(Scop &S, int CallNo); } // namespace polly +namespace llvm { +void initializeSimplifyWrapperPassPass(llvm::PassRegistry &); +void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_TRANSFORM_SIMPLIFY_H */ diff --git a/polly/include/polly/Support/DumpFunctionPass.h b/polly/include/polly/Support/DumpFunctionPass.h index af04912ed4fe2..e5c16203adb8f 100644 --- a/polly/include/polly/Support/DumpFunctionPass.h +++ b/polly/include/polly/Support/DumpFunctionPass.h @@ -16,7 +16,13 @@ #include "llvm/IR/PassManager.h" #include +namespace llvm { +class FunctionPass; +class ModulePass; +} // namespace llvm + namespace polly { +llvm::FunctionPass *createDumpFunctionWrapperPass(std::string Suffix); /// A pass that isolates a function into a new Module and writes it into a file. struct DumpFunctionPass final : llvm::PassInfoMixin { @@ -27,6 +33,12 @@ struct DumpFunctionPass final : llvm::PassInfoMixin { llvm::PreservedAnalyses run(llvm::Function &F, llvm::FunctionAnalysisManager &AM); }; + } // namespace polly +namespace llvm { +class PassRegistry; +void initializeDumpFunctionWrapperPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_SUPPORT_DUMPFUNCTIONPASS_H */ diff --git a/polly/include/polly/Support/DumpModulePass.h b/polly/include/polly/Support/DumpModulePass.h index 6d393a174b19b..c90bbc2484310 100644 --- a/polly/include/polly/Support/DumpModulePass.h +++ b/polly/include/polly/Support/DumpModulePass.h @@ -16,8 +16,12 @@ #include "llvm/IR/PassManager.h" #include +namespace llvm { +class ModulePass; +} // namespace llvm + namespace polly { -/// A pass that prints the module into a file. +/// Create a pass that prints the module into a file. /// /// The meaning of @p Filename depends on @p IsSuffix. If IsSuffix==false, then /// the module is written to the @p Filename. If it is true, the filename is @@ -26,6 +30,10 @@ namespace polly { /// The intent of IsSuffix is to avoid the file being overwritten when /// processing multiple modules and/or with multiple dump passes in the /// pipeline. +llvm::ModulePass *createDumpModuleWrapperPass(std::string Filename, + bool IsSuffix); + +/// A pass that prints the module into a file. struct DumpModulePass final : llvm::PassInfoMixin { std::string Filename; bool IsSuffix; @@ -38,4 +46,9 @@ struct DumpModulePass final : llvm::PassInfoMixin { } // namespace polly +namespace llvm { +class PassRegistry; +void initializeDumpModuleWrapperPassPass(llvm::PassRegistry &); +} // namespace llvm + #endif /* POLLY_SUPPORT_DUMPMODULEPASS_H */ diff --git a/polly/include/polly/Support/ScopHelper.h b/polly/include/polly/Support/ScopHelper.h index 38b731a9f7d8d..75891525ff7b3 100644 --- a/polly/include/polly/Support/ScopHelper.h +++ b/polly/include/polly/Support/ScopHelper.h @@ -358,6 +358,14 @@ namespace polly { void simplifyRegion(llvm::Region *R, llvm::DominatorTree *DT, llvm::LoopInfo *LI, llvm::RegionInfo *RI); +/// Split the entry block of a function to store the newly inserted +/// allocations outside of all Scops. +/// +/// @param EntryBlock The entry block of the current function. +/// @param P The pass that currently running. +/// +void splitEntryBlockForAlloca(llvm::BasicBlock *EntryBlock, llvm::Pass *P); + /// Split the entry block of a function to store the newly inserted /// allocations outside of all Scops. /// diff --git a/polly/lib/Analysis/DependenceInfo.cpp b/polly/lib/Analysis/DependenceInfo.cpp index 5183fc5725ece..c620f40ad0724 100644 --- a/polly/lib/Analysis/DependenceInfo.cpp +++ b/polly/lib/Analysis/DependenceInfo.cpp @@ -20,6 +20,7 @@ //===----------------------------------------------------------------------===// // #include "polly/DependenceInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/Support/GICHelper.h" @@ -41,10 +42,6 @@ using namespace llvm; #include "polly/Support/PollyDebug.h" #define DEBUG_TYPE "polly-dependence" -namespace polly { -Dependences::AnalysisLevel OptAnalysisLevel; -} - static cl::opt OptComputeOut( "polly-dependences-computeout", cl::desc("Bound the dependence analysis by a maximal amount of " @@ -72,10 +69,9 @@ static cl::opt OptAnalysisType( "Overapproximation of dependences")), cl::Hidden, cl::init(VALUE_BASED_ANALYSIS), cl::cat(PollyCategory)); -static cl::opt XOptAnalysisLevel( +static cl::opt OptAnalysisLevel( "polly-dependences-analysis-level", cl::desc("The level of dependence analysis"), - cl::location(OptAnalysisLevel), cl::values(clEnumValN(Dependences::AL_Statement, "statement-wise", "Statement-level analysis"), clEnumValN(Dependences::AL_Reference, "reference-wise", @@ -885,7 +881,213 @@ DependenceInfoPrinterPass::run(Scop &S, ScopAnalysisManager &SAM, return PreservedAnalyses::all(); } -DependenceAnalysis::Result polly::runDependenceAnalysis(Scop &S) { - DependenceAnalysis::Result Result{S, {}}; - return Result; +const Dependences & +DependenceInfo::getDependences(Dependences::AnalysisLevel Level) { + if (Dependences *d = D[Level].get()) + return *d; + + return recomputeDependences(Level); +} + +const Dependences & +DependenceInfo::recomputeDependences(Dependences::AnalysisLevel Level) { + D[Level].reset(new Dependences(S->getSharedIslCtx(), Level)); + D[Level]->calculateDependences(*S); + return *D[Level]; +} + +void DependenceInfo::abandonDependences() { + for (std::unique_ptr &Deps : D) + Deps.release(); +} + +bool DependenceInfo::runOnScop(Scop &ScopVar) { + S = &ScopVar; + return false; +} + +/// Print the dependences for the given SCoP to @p OS. + +void polly::DependenceInfo::printScop(raw_ostream &OS, Scop &S) const { + if (auto d = D[OptAnalysisLevel].get()) { + d->print(OS); + return; + } + + // Otherwise create the dependences on-the-fly and print it + Dependences D(S.getSharedIslCtx(), OptAnalysisLevel); + D.calculateDependences(S); + D.print(OS); +} + +void DependenceInfo::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequiredTransitive(); + AU.setPreservesAll(); +} + +char DependenceInfo::ID = 0; + +Pass *polly::createDependenceInfoPass() { return new DependenceInfo(); } + +INITIALIZE_PASS_BEGIN(DependenceInfo, "polly-dependences", + "Polly - Calculate dependences", false, false); +INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass); +INITIALIZE_PASS_END(DependenceInfo, "polly-dependences", + "Polly - Calculate dependences", false, false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from DependenceAnalysis. +class DependenceInfoPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + DependenceInfoPrinterLegacyPass() : DependenceInfoPrinterLegacyPass(outs()) {} + + explicit DependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + DependenceInfo &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for " + << "region: '" << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char DependenceInfoPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createDependenceInfoPrinterLegacyPass(raw_ostream &OS) { + return new DependenceInfoPrinterLegacyPass(OS); +} + +INITIALIZE_PASS_BEGIN(DependenceInfoPrinterLegacyPass, + "polly-print-dependences", "Polly - Print dependences", + false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo); +INITIALIZE_PASS_END(DependenceInfoPrinterLegacyPass, "polly-print-dependences", + "Polly - Print dependences", false, false) + +//===----------------------------------------------------------------------===// + +const Dependences & +DependenceInfoWrapperPass::getDependences(Scop *S, + Dependences::AnalysisLevel Level) { + auto It = ScopToDepsMap.find(S); + if (It != ScopToDepsMap.end()) + if (It->second) { + if (It->second->getDependenceLevel() == Level) + return *It->second; + } + return recomputeDependences(S, Level); +} + +const Dependences &DependenceInfoWrapperPass::recomputeDependences( + Scop *S, Dependences::AnalysisLevel Level) { + std::unique_ptr D(new Dependences(S->getSharedIslCtx(), Level)); + D->calculateDependences(*S); + auto Inserted = ScopToDepsMap.insert(std::make_pair(S, std::move(D))); + return *Inserted.first->second; } + +bool DependenceInfoWrapperPass::runOnFunction(Function &F) { + auto &SI = *getAnalysis().getSI(); + for (auto &It : SI) { + assert(It.second && "Invalid SCoP object!"); + recomputeDependences(It.second.get(), Dependences::AL_Access); + } + return false; +} + +void DependenceInfoWrapperPass::print(raw_ostream &OS, const Module *M) const { + for (auto &It : ScopToDepsMap) { + assert((It.first && It.second) && "Invalid Scop or Dependence object!\n"); + It.second->print(OS); + } +} + +void DependenceInfoWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequiredTransitive(); + AU.setPreservesAll(); +} + +char DependenceInfoWrapperPass::ID = 0; + +Pass *polly::createDependenceInfoWrapperPassPass() { + return new DependenceInfoWrapperPass(); +} + +INITIALIZE_PASS_BEGIN( + DependenceInfoWrapperPass, "polly-function-dependences", + "Polly - Calculate dependences for all the SCoPs of a function", false, + false) +INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass); +INITIALIZE_PASS_END( + DependenceInfoWrapperPass, "polly-function-dependences", + "Polly - Calculate dependences for all the SCoPs of a function", false, + false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from DependenceInfoWrapperPass. +class DependenceInfoPrinterLegacyFunctionPass final : public FunctionPass { +public: + static char ID; + + DependenceInfoPrinterLegacyFunctionPass() + : DependenceInfoPrinterLegacyFunctionPass(outs()) {} + + explicit DependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS) + : FunctionPass(ID), OS(OS) {} + + bool runOnFunction(Function &F) override { + DependenceInfoWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for function '" + << F.getName() << "':\n"; + P.print(OS); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + FunctionPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char DependenceInfoPrinterLegacyFunctionPass::ID = 0; +} // namespace + +Pass *polly::createDependenceInfoPrinterLegacyFunctionPass(raw_ostream &OS) { + return new DependenceInfoPrinterLegacyFunctionPass(OS); +} + +INITIALIZE_PASS_BEGIN( + DependenceInfoPrinterLegacyFunctionPass, "polly-print-function-dependences", + "Polly - Print dependences for all the SCoPs of a function", false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfoWrapperPass); +INITIALIZE_PASS_END(DependenceInfoPrinterLegacyFunctionPass, + "polly-print-function-dependences", + "Polly - Print dependences for all the SCoPs of a function", + false, false) diff --git a/polly/lib/Analysis/PruneUnprofitable.cpp b/polly/lib/Analysis/PruneUnprofitable.cpp index 40cc9178da0f3..f8469c03fe55b 100644 --- a/polly/lib/Analysis/PruneUnprofitable.cpp +++ b/polly/lib/Analysis/PruneUnprofitable.cpp @@ -55,9 +55,8 @@ static void updateStatistics(Scop &S, bool Pruned) { NumAffineLoops += ScopStats.NumAffineLoops; } } -} // namespace -bool polly::runPruneUnprofitable(Scop &S) { +static bool runPruneUnprofitable(Scop &S) { if (PollyProcessUnprofitable) { POLLY_DEBUG( dbgs() << "NOTE: -polly-process-unprofitable active, won't prune " @@ -80,6 +79,35 @@ bool polly::runPruneUnprofitable(Scop &S) { return false; } +class PruneUnprofitableWrapperPass final : public ScopPass { +public: + static char ID; + + explicit PruneUnprofitableWrapperPass() : ScopPass(ID) {} + PruneUnprofitableWrapperPass(const PruneUnprofitableWrapperPass &) = delete; + PruneUnprofitableWrapperPass & + operator=(const PruneUnprofitableWrapperPass &) = delete; + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnScop(Scop &S) override { return runPruneUnprofitable(S); } +}; +} // namespace + +char PruneUnprofitableWrapperPass::ID; + +Pass *polly::createPruneUnprofitableWrapperPass() { + return new PruneUnprofitableWrapperPass(); +} + +INITIALIZE_PASS_BEGIN(PruneUnprofitableWrapperPass, "polly-prune-unprofitable", + "Polly - Prune unprofitable SCoPs", false, false) +INITIALIZE_PASS_END(PruneUnprofitableWrapperPass, "polly-prune-unprofitable", + "Polly - Prune unprofitable SCoPs", false, false) + llvm::PreservedAnalyses PruneUnprofitablePass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &U) { diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp index 60a1e00916750..67a4c43455809 100644 --- a/polly/lib/Analysis/ScopBuilder.cpp +++ b/polly/lib/Analysis/ScopBuilder.cpp @@ -56,7 +56,6 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" #include -#include using namespace llvm; using namespace polly; diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 29e89348125f2..43ed8636b054b 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -44,6 +44,7 @@ //===----------------------------------------------------------------------===// #include "polly/ScopDetection.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopDetectionDiagnostic.h" #include "polly/Support/SCEVValidator.h" @@ -74,6 +75,8 @@ #include "llvm/IR/Module.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/Value.h" +#include "llvm/InitializePasses.h" +#include "llvm/Pass.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Regex.h" #include "llvm/Support/raw_ostream.h" @@ -1980,12 +1983,53 @@ void ScopDetection::verifyAnalysis() { verifyRegion(*R); } +bool ScopDetectionWrapperPass::runOnFunction(Function &F) { + auto &LI = getAnalysis().getLoopInfo(); + auto &RI = getAnalysis().getRegionInfo(); + auto &AA = getAnalysis().getAAResults(); + auto &SE = getAnalysis().getSE(); + auto &DT = getAnalysis().getDomTree(); + auto &ORE = getAnalysis().getORE(); + + Result = std::make_unique(DT, SE, LI, RI, AA, ORE); + Result->detect(F); + return false; +} + +void ScopDetectionWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.addRequiredTransitive(); + AU.addRequired(); + AU.addRequired(); + // We also need AA and RegionInfo when we are verifying analysis. + AU.addRequiredTransitive(); + AU.addRequiredTransitive(); + AU.setPreservesAll(); +} + +void ScopDetectionWrapperPass::print(raw_ostream &OS, const Module *) const { + for (const Region *R : Result->ValidRegions) + OS << "Valid Region for Scop: " << R->getNameStr() << '\n'; + + OS << "\n"; +} + +ScopDetectionWrapperPass::ScopDetectionWrapperPass() : FunctionPass(ID) { + // Disable runtime alias checks if we ignore aliasing all together. + if (IgnoreAliasing) + PollyUseRuntimeAliasChecks = false; +} + ScopAnalysis::ScopAnalysis() { // Disable runtime alias checks if we ignore aliasing all together. if (IgnoreAliasing) PollyUseRuntimeAliasChecks = false; } +void ScopDetectionWrapperPass::releaseMemory() { Result.reset(); } + +char ScopDetectionWrapperPass::ID; + AnalysisKey ScopAnalysis::Key; ScopDetection ScopAnalysis::run(Function &F, FunctionAnalysisManager &FAM) { @@ -2011,3 +2055,66 @@ PreservedAnalyses ScopAnalysisPrinterPass::run(Function &F, OS << "\n"; return PreservedAnalyses::all(); } + +Pass *polly::createScopDetectionWrapperPassPass() { + return new ScopDetectionWrapperPass(); +} + +INITIALIZE_PASS_BEGIN(ScopDetectionWrapperPass, "polly-detect", + "Polly - Detect static control parts (SCoPs)", false, + false); +INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass); +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass); +INITIALIZE_PASS_DEPENDENCY(RegionInfoPass); +INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass); +INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass); +INITIALIZE_PASS_END(ScopDetectionWrapperPass, "polly-detect", + "Polly - Detect static control parts (SCoPs)", false, false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from ScopDetectionWrapperPass. +class ScopDetectionPrinterLegacyPass final : public FunctionPass { +public: + static char ID; + + ScopDetectionPrinterLegacyPass() : ScopDetectionPrinterLegacyPass(outs()) {} + + explicit ScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS) + : FunctionPass(ID), OS(OS) {} + + bool runOnFunction(Function &F) override { + ScopDetectionWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for function '" + << F.getName() << "':\n"; + P.print(OS); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + FunctionPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char ScopDetectionPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createScopDetectionPrinterLegacyPass(raw_ostream &OS) { + return new ScopDetectionPrinterLegacyPass(OS); +} + +INITIALIZE_PASS_BEGIN(ScopDetectionPrinterLegacyPass, "polly-print-detect", + "Polly - Print static control parts (SCoPs)", false, + false); +INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass); +INITIALIZE_PASS_END(ScopDetectionPrinterLegacyPass, "polly-print-detect", + "Polly - Print static control parts (SCoPs)", false, false) diff --git a/polly/lib/Analysis/ScopGraphPrinter.cpp b/polly/lib/Analysis/ScopGraphPrinter.cpp index 29e212882cefe..eb6c995f0bb91 100644 --- a/polly/lib/Analysis/ScopGraphPrinter.cpp +++ b/polly/lib/Analysis/ScopGraphPrinter.cpp @@ -14,26 +14,20 @@ //===----------------------------------------------------------------------===// #include "polly/ScopGraphPrinter.h" +#include "polly/LinkAllPasses.h" #include "polly/ScopDetection.h" #include "llvm/Support/CommandLine.h" using namespace polly; using namespace llvm; +static cl::opt + ViewFilter("polly-view-only", + cl::desc("Only view functions that match this pattern"), + cl::Hidden, cl::init("")); -namespace polly { -std::string ViewFilter; -bool ViewAll; -} // namespace polly - -static cl::opt - XViewFilter("polly-view-only", - cl::desc("Only view functions that match this pattern"), - cl::location(ViewFilter), cl::Hidden, cl::init("")); - -static cl::opt - XViewAll("polly-view-all", - cl::desc("Also show functions without any scops"), - cl::location(ViewAll), cl::Hidden, cl::init(false)); +static cl::opt ViewAll("polly-view-all", + cl::desc("Also show functions without any scops"), + cl::Hidden, cl::init(false)); namespace llvm { @@ -140,6 +134,104 @@ void DOTGraphTraits::addCustomGraphFeatures( } // namespace llvm +struct ScopDetectionAnalysisGraphTraits { + static ScopDetection *getGraph(ScopDetectionWrapperPass *Analysis) { + return &Analysis->getSD(); + } +}; + +struct ScopViewerWrapperPass + : DOTGraphTraitsViewerWrapperPass { + static char ID; + ScopViewerWrapperPass() + : DOTGraphTraitsViewerWrapperPass( + "scops", ID) {} + bool processFunction(Function &F, ScopDetectionWrapperPass &SD) override { + if (ViewFilter != "" && !F.getName().count(ViewFilter)) + return false; + + if (ViewAll) + return true; + + // Check that at least one scop was detected. + return std::distance(SD.getSD().begin(), SD.getSD().end()) > 0; + } +}; +char ScopViewerWrapperPass::ID = 0; + +struct ScopOnlyViewerWrapperPass + : DOTGraphTraitsViewerWrapperPass { + static char ID; + ScopOnlyViewerWrapperPass() + : DOTGraphTraitsViewerWrapperPass( + "scopsonly", ID) {} +}; +char ScopOnlyViewerWrapperPass::ID = 0; + +struct ScopPrinterWrapperPass + : DOTGraphTraitsPrinterWrapperPass { + static char ID; + ScopPrinterWrapperPass() + : DOTGraphTraitsPrinterWrapperPass( + "scops", ID) {} +}; +char ScopPrinterWrapperPass::ID = 0; + +struct ScopOnlyPrinterWrapperPass + : DOTGraphTraitsPrinterWrapperPass { + static char ID; + ScopOnlyPrinterWrapperPass() + : DOTGraphTraitsPrinterWrapperPass( + "scopsonly", ID) {} +}; +char ScopOnlyPrinterWrapperPass::ID = 0; + +static RegisterPass X("view-scops", + "Polly - View Scops of function"); + +static RegisterPass + Y("view-scops-only", + "Polly - View Scops of function (with no function bodies)"); + +static RegisterPass + M("dot-scops", "Polly - Print Scops of function"); + +static RegisterPass + N("dot-scops-only", + "Polly - Print Scops of function (with no function bodies)"); + +Pass *polly::createDOTViewerWrapperPass() { + return new ScopViewerWrapperPass(); +} + +Pass *polly::createDOTOnlyViewerWrapperPass() { + return new ScopOnlyViewerWrapperPass(); +} + +Pass *polly::createDOTPrinterWrapperPass() { + return new ScopPrinterWrapperPass(); +} + +Pass *polly::createDOTOnlyPrinterWrapperPass() { + return new ScopOnlyPrinterWrapperPass(); +} + bool ScopViewer::processFunction(Function &F, const ScopDetection &SD) { if (ViewFilter != "" && !F.getName().count(ViewFilter)) return false; diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 70e184d3f897f..8c6a2360a249b 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -17,6 +17,7 @@ //===----------------------------------------------------------------------===// #include "polly/ScopInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopBuilder.h" #include "polly/ScopDetection.h" @@ -56,6 +57,7 @@ #include "llvm/IR/PassManager.h" #include "llvm/IR/Type.h" #include "llvm/IR/Value.h" +#include "llvm/InitializePasses.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" @@ -2542,6 +2544,19 @@ raw_ostream &polly::operator<<(raw_ostream &OS, const Scop &scop) { return OS; } +//===----------------------------------------------------------------------===// +void ScopInfoRegionPass::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequiredTransitive(); + AU.addRequiredTransitive(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.setPreservesAll(); +} + void updateLoopCountStatistic(ScopDetection::LoopStats Stats, Scop::ScopStatistics ScopStats) { assert(Stats.NumLoops == ScopStats.NumAffineLoops + ScopStats.NumBoxedLoops); @@ -2577,6 +2592,112 @@ void updateLoopCountStatistic(ScopDetection::LoopStats Stats, NumSingletonWritesInLoops += ScopStats.NumSingletonWritesInLoops; } +bool ScopInfoRegionPass::runOnRegion(Region *R, RGPassManager &RGM) { + auto &SD = getAnalysis().getSD(); + + if (!SD.isMaxRegionInScop(*R)) + return false; + + Function *F = R->getEntry()->getParent(); + auto &SE = getAnalysis().getSE(); + auto &LI = getAnalysis().getLoopInfo(); + auto &AA = getAnalysis().getAAResults(); + auto const &DL = F->getParent()->getDataLayout(); + auto &DT = getAnalysis().getDomTree(); + auto &AC = getAnalysis().getAssumptionCache(*F); + auto &ORE = getAnalysis().getORE(); + + ScopBuilder SB(R, AC, AA, DL, DT, LI, SD, SE, ORE); + S = SB.getScop(); // take ownership of scop object + +#if !defined(NDEBUG) || defined(LLVM_ENABLE_STATS) + if (S) { + ScopDetection::LoopStats Stats = + ScopDetection::countBeneficialLoops(&S->getRegion(), SE, LI, 0); + updateLoopCountStatistic(Stats, S->getStatistics()); + } +#endif + + return false; +} + +void ScopInfoRegionPass::print(raw_ostream &OS, const Module *) const { + if (S) + S->print(OS, PollyPrintInstructions); + else + OS << "Invalid Scop!\n"; +} + +char ScopInfoRegionPass::ID = 0; + +Pass *polly::createScopInfoRegionPassPass() { return new ScopInfoRegionPass(); } + +INITIALIZE_PASS_BEGIN(ScopInfoRegionPass, "polly-scops", + "Polly - Create polyhedral description of Scops", false, + false); +INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass); +INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker); +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass); +INITIALIZE_PASS_DEPENDENCY(RegionInfoPass); +INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass); +INITIALIZE_PASS_END(ScopInfoRegionPass, "polly-scops", + "Polly - Create polyhedral description of Scops", false, + false) + +//===----------------------------------------------------------------------===// + +namespace { + +/// Print result from ScopInfoRegionPass. +class ScopInfoPrinterLegacyRegionPass final : public RegionPass { +public: + static char ID; + + ScopInfoPrinterLegacyRegionPass() : ScopInfoPrinterLegacyRegionPass(outs()) {} + + explicit ScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS) + : RegionPass(ID), OS(OS) {} + + bool runOnRegion(Region *R, RGPassManager &RGM) override { + ScopInfoRegionPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << R->getNameStr() << "' in function '" + << R->getEntry()->getParent()->getName() << "':\n"; + P.print(OS); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + RegionPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char ScopInfoPrinterLegacyRegionPass::ID = 0; +} // namespace + +Pass *polly::createScopInfoPrinterLegacyRegionPass(raw_ostream &OS) { + return new ScopInfoPrinterLegacyRegionPass(OS); +} + +INITIALIZE_PASS_BEGIN(ScopInfoPrinterLegacyRegionPass, "polly-print-scops", + "Polly - Print polyhedral description of Scops", false, + false); +INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass); +INITIALIZE_PASS_END(ScopInfoPrinterLegacyRegionPass, "polly-print-scops", + "Polly - Print polyhedral description of Scops", false, + false) + +//===----------------------------------------------------------------------===// + ScopInfo::ScopInfo(const DataLayout &DL, ScopDetection &SD, ScalarEvolution &SE, LoopInfo &LI, AliasAnalysis &AA, DominatorTree &DT, AssumptionCache &AC, OptimizationRemarkEmitter &ORE) @@ -2650,3 +2771,110 @@ PreservedAnalyses ScopInfoPrinterPass::run(Function &F, } return PreservedAnalyses::all(); } + +void ScopInfoWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequiredTransitive(); + AU.addRequiredTransitive(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.setPreservesAll(); +} + +bool ScopInfoWrapperPass::runOnFunction(Function &F) { + auto &SD = getAnalysis().getSD(); + auto &SE = getAnalysis().getSE(); + auto &LI = getAnalysis().getLoopInfo(); + auto &AA = getAnalysis().getAAResults(); + auto const &DL = F.getParent()->getDataLayout(); + auto &DT = getAnalysis().getDomTree(); + auto &AC = getAnalysis().getAssumptionCache(F); + auto &ORE = getAnalysis().getORE(); + + Result.reset(new ScopInfo{DL, SD, SE, LI, AA, DT, AC, ORE}); + return false; +} + +void ScopInfoWrapperPass::print(raw_ostream &OS, const Module *) const { + for (auto &It : *Result) { + if (It.second) + It.second->print(OS, PollyPrintInstructions); + else + OS << "Invalid Scop!\n"; + } +} + +char ScopInfoWrapperPass::ID = 0; + +Pass *polly::createScopInfoWrapperPassPass() { + return new ScopInfoWrapperPass(); +} + +INITIALIZE_PASS_BEGIN( + ScopInfoWrapperPass, "polly-function-scops", + "Polly - Create polyhedral description of all Scops of a function", false, + false); +INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass); +INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker); +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass); +INITIALIZE_PASS_DEPENDENCY(RegionInfoPass); +INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass); +INITIALIZE_PASS_END( + ScopInfoWrapperPass, "polly-function-scops", + "Polly - Create polyhedral description of all Scops of a function", false, + false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from ScopInfoWrapperPass. +class ScopInfoPrinterLegacyFunctionPass final : public FunctionPass { +public: + static char ID; + + ScopInfoPrinterLegacyFunctionPass() + : ScopInfoPrinterLegacyFunctionPass(outs()) {} + explicit ScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS) + : FunctionPass(ID), OS(OS) {} + + bool runOnFunction(Function &F) override { + ScopInfoWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for function '" + << F.getName() << "':\n"; + P.print(OS); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + FunctionPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char ScopInfoPrinterLegacyFunctionPass::ID = 0; +} // namespace + +Pass *polly::createScopInfoPrinterLegacyFunctionPass(raw_ostream &OS) { + return new ScopInfoPrinterLegacyFunctionPass(OS); +} + +INITIALIZE_PASS_BEGIN( + ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops", + "Polly - Print polyhedral description of all Scops of a function", false, + false); +INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass); +INITIALIZE_PASS_END( + ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops", + "Polly - Print polyhedral description of all Scops of a function", false, + false) diff --git a/polly/lib/Analysis/ScopPass.cpp b/polly/lib/Analysis/ScopPass.cpp index 61417e799cfa5..719cd0f6984e0 100644 --- a/polly/lib/Analysis/ScopPass.cpp +++ b/polly/lib/Analysis/ScopPass.cpp @@ -24,6 +24,42 @@ using namespace llvm; using namespace polly; +bool ScopPass::runOnRegion(Region *R, RGPassManager &RGM) { + S = nullptr; + + if (skipRegion(*R)) + return false; + + if ((S = getAnalysis().getScop())) + return runOnScop(*S); + + return false; +} + +void ScopPass::print(raw_ostream &OS, const Module *M) const { + if (S) + printScop(OS, *S); +} + +void ScopPass::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); +} + namespace polly { template class OwningInnerAnalysisManagerProxy; } diff --git a/polly/lib/CMakeLists.txt b/polly/lib/CMakeLists.txt index e4f196f151c9e..0ed673815ff34 100644 --- a/polly/lib/CMakeLists.txt +++ b/polly/lib/CMakeLists.txt @@ -60,9 +60,6 @@ add_llvm_pass_plugin(Polly CodeGen/RuntimeDebugBuilder.cpp CodeGen/PerfMonitor.cpp Exchange/JSONExporter.cpp - Pass/PhaseManager.cpp - Pass/PollyFunctionPass.cpp - Pass/PollyModulePass.cpp Support/GICHelper.cpp Support/PollyDebug.cpp Support/SCEVAffinator.cpp diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp index f2d5a3422849e..2d8b393cc039c 100644 --- a/polly/lib/CodeGen/CodeGeneration.cpp +++ b/polly/lib/CodeGen/CodeGeneration.cpp @@ -25,6 +25,7 @@ #include "polly/CodeGen/PerfMonitor.h" #include "polly/CodeGen/Utils.h" #include "polly/DependenceInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/Support/ScopHelper.h" @@ -36,6 +37,7 @@ #include "llvm/IR/Function.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/Verifier.h" +#include "llvm/InitializePasses.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" @@ -312,6 +314,59 @@ static bool generateCode(Scop &S, IslAstInfo &AI, LoopInfo &LI, return true; } +namespace { + +class CodeGeneration final : public ScopPass { +public: + static char ID; + + /// The data layout used. + const DataLayout *DL; + + /// @name The analysis passes we need to generate code. + /// + ///{ + LoopInfo *LI; + IslAstInfo *AI; + DominatorTree *DT; + ScalarEvolution *SE; + RegionInfo *RI; + ///} + + CodeGeneration() : ScopPass(ID) {} + + /// Generate LLVM-IR for the SCoP @p S. + bool runOnScop(Scop &S) override { + AI = &getAnalysis().getAI(); + LI = &getAnalysis().getLoopInfo(); + DT = &getAnalysis().getDomTree(); + SE = &getAnalysis().getSE(); + DL = &S.getFunction().getDataLayout(); + RI = &getAnalysis().getRegionInfo(); + return generateCode(S, *AI, *LI, *DT, *SE, *RI); + } + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + + AU.addPreserved(); + AU.addPreserved(); + + // FIXME: We do not yet add regions for the newly generated code to the + // region tree. + } +}; +} // namespace + PreservedAnalyses CodeGenerationPass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &AR, SPMUpdater &U) { @@ -324,6 +379,17 @@ PreservedAnalyses CodeGenerationPass::run(Scop &S, ScopAnalysisManager &SAM, return PreservedAnalyses::all(); } -bool polly::runCodeGeneration(Scop &S, RegionInfo &RI, IslAstInfo &AI) { - return generateCode(S, AI, *S.getLI(), *S.getDT(), *S.getSE(), RI); -} +char CodeGeneration::ID = 1; + +Pass *polly::createCodeGenerationPass() { return new CodeGeneration(); } + +INITIALIZE_PASS_BEGIN(CodeGeneration, "polly-codegen", + "Polly - Create LLVM-IR from SCoPs", false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo); +INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass); +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass); +INITIALIZE_PASS_DEPENDENCY(RegionInfoPass); +INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass); +INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass); +INITIALIZE_PASS_END(CodeGeneration, "polly-codegen", + "Polly - Create LLVM-IR from SCoPs", false, false) diff --git a/polly/lib/CodeGen/IslAst.cpp b/polly/lib/CodeGen/IslAst.cpp index 3177cda225f1d..09bacda196742 100644 --- a/polly/lib/CodeGen/IslAst.cpp +++ b/polly/lib/CodeGen/IslAst.cpp @@ -29,6 +29,7 @@ #include "polly/CodeGen/IslAst.h" #include "polly/CodeGen/CodeGeneration.h" #include "polly/DependenceInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopDetection.h" #include "polly/ScopInfo.h" @@ -82,11 +83,6 @@ static cl::opt DetectParallel("polly-ast-detect-parallel", cl::desc("Detect parallelism"), cl::Hidden, cl::cat(PollyCategory)); -static cl::opt - PollyPrintAst("polly-print-ast", - cl::desc("Print the ISL abstract syntax tree"), - cl::cat(PollyCategory)); - STATISTIC(ScopsProcessed, "Number of SCoPs processed"); STATISTIC(ScopsBeneficial, "Number of beneficial SCoPs"); STATISTIC(BeneficialAffineLoops, "Number of beneficial affine loops"); @@ -780,19 +776,90 @@ PreservedAnalyses IslAstPrinterPass::run(Scop &S, ScopAnalysisManager &SAM, return PreservedAnalyses::all(); } -std::unique_ptr -polly::runIslAstGen(Scop &S, DependenceAnalysis::Result &DA) { - auto GetDeps = [&](Dependences::AnalysisLevel Lvl) -> const Dependences & { - return DA.getDependences(Lvl); +void IslAstInfoWrapperPass::releaseMemory() { Ast.reset(); } + +bool IslAstInfoWrapperPass::runOnScop(Scop &Scop) { + auto GetDeps = [this](Dependences::AnalysisLevel Lvl) -> const Dependences & { + return getAnalysis().getDependences(Lvl); }; - std::unique_ptr Result = runIslAst(S, GetDeps); - if (PollyPrintAst) { - outs() << "Printing analysis 'Polly - Generate an AST of the SCoP (isl)'" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; - if (Result) - Result->print(llvm::outs()); + Ast = runIslAst(Scop, GetDeps); + + return false; +} + +void IslAstInfoWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { + // Get the Common analysis usage of ScopPasses. + ScopPass::getAnalysisUsage(AU); + AU.addRequiredTransitive(); + AU.addRequired(); + + AU.addPreserved(); +} + +void IslAstInfoWrapperPass::printScop(raw_ostream &OS, Scop &S) const { + OS << "Printing analysis 'Polly - Generate an AST of the SCoP (isl)'" + << S.getName() << "' in function '" << S.getFunction().getName() << "':\n"; + if (Ast) + Ast->print(OS); +} + +char IslAstInfoWrapperPass::ID = 0; + +Pass *polly::createIslAstInfoWrapperPassPass() { + return new IslAstInfoWrapperPass(); +} + +INITIALIZE_PASS_BEGIN(IslAstInfoWrapperPass, "polly-ast", + "Polly - Generate an AST of the SCoP (isl)", false, + false); +INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo); +INITIALIZE_PASS_END(IslAstInfoWrapperPass, "polly-ast", + "Polly - Generate an AST from the SCoP (isl)", false, false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from IslAstInfoWrapperPass. +class IslAstInfoPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + IslAstInfoPrinterLegacyPass() : IslAstInfoPrinterLegacyPass(outs()) {} + explicit IslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + IslAstInfoWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; } - return Result; + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char IslAstInfoPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createIslAstInfoPrinterLegacyPass(raw_ostream &OS) { + return new IslAstInfoPrinterLegacyPass(OS); } + +INITIALIZE_PASS_BEGIN(IslAstInfoPrinterLegacyPass, "polly-print-ast", + "Polly - Print the AST from a SCoP (isl)", false, false); +INITIALIZE_PASS_DEPENDENCY(IslAstInfoWrapperPass); +INITIALIZE_PASS_END(IslAstInfoPrinterLegacyPass, "polly-print-ast", + "Polly - Print the AST from a SCoP (isl)", false, false) diff --git a/polly/lib/Exchange/JSONExporter.cpp b/polly/lib/Exchange/JSONExporter.cpp index 7d30c030aa6e1..dfd63146edb5e 100644 --- a/polly/lib/Exchange/JSONExporter.cpp +++ b/polly/lib/Exchange/JSONExporter.cpp @@ -12,6 +12,7 @@ #include "polly/JSONExporter.h" #include "polly/DependenceInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/ScopPass.h" @@ -35,11 +36,6 @@ using namespace polly; #define DEBUG_TYPE "polly-import-jscop" -static cl::opt - PollyPrintImportJscop("polly-print-import-jscop", - cl::desc("Polly - Print Scop import result"), - cl::cat(PollyCategory)); - STATISTIC(NewAccessMapFound, "Number of updated access functions"); namespace { @@ -54,6 +50,36 @@ static cl::opt cl::desc("Postfix to append to the import .jsop files."), cl::Hidden, cl::value_desc("File postfix"), cl::ValueRequired, cl::init(""), cl::cat(PollyCategory)); + +class JSONExporter : public ScopPass { +public: + static char ID; + explicit JSONExporter() : ScopPass(ID) {} + + /// Export the SCoP @p S to a JSON file. + bool runOnScop(Scop &S) override; + + /// Print the SCoP @p S as it is exported. + void printScop(raw_ostream &OS, Scop &S) const override; + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; + +class JSONImporter : public ScopPass { +public: + static char ID; + std::vector NewAccessStrings; + explicit JSONImporter() : ScopPass(ID) {} + /// Import new access functions for SCoP @p S from a JSON file. + bool runOnScop(Scop &S) override; + + /// Print the SCoP @p S and the imported access functions. + void printScop(raw_ostream &OS, Scop &S) const override; + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; } // namespace static std::string getFileName(Scop &S, StringRef Suffix = "") { @@ -716,6 +742,21 @@ static bool importScop(Scop &S, const Dependences &D, const DataLayout &DL, return true; } +char JSONExporter::ID = 0; +void JSONExporter::printScop(raw_ostream &OS, Scop &S) const { OS << S; } + +bool JSONExporter::runOnScop(Scop &S) { + exportScop(S); + return false; +} + +void JSONExporter::getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + AU.addRequired(); +} + +Pass *polly::createJSONExporterPass() { return new JSONExporter(); } + PreservedAnalyses JSONExportPass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &) { @@ -723,6 +764,37 @@ PreservedAnalyses JSONExportPass::run(Scop &S, ScopAnalysisManager &SAM, return PreservedAnalyses::all(); } +char JSONImporter::ID = 0; + +void JSONImporter::printScop(raw_ostream &OS, Scop &S) const { + OS << S; + for (std::vector::const_iterator I = NewAccessStrings.begin(), + E = NewAccessStrings.end(); + I != E; I++) + OS << "New access function '" << *I << "' detected in JSCOP file\n"; +} + +bool JSONImporter::runOnScop(Scop &S) { + const Dependences &D = + getAnalysis().getDependences(Dependences::AL_Statement); + const DataLayout &DL = S.getFunction().getParent()->getDataLayout(); + + if (!importScop(S, D, DL, &NewAccessStrings)) + report_fatal_error("Tried to import a malformed jscop file."); + + return false; +} + +void JSONImporter::getAnalysisUsage(AnalysisUsage &AU) const { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + + // TODO: JSONImporter should throw away DependenceInfo. + AU.addPreserved(); +} + +Pass *polly::createJSONImporterPass() { return new JSONImporter(); } + PreservedAnalyses JSONImportPass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &) { @@ -742,24 +814,68 @@ PreservedAnalyses JSONImportPass::run(Scop &S, ScopAnalysisManager &SAM, return PA; } -void polly::runImportJSON(Scop &S, DependenceAnalysis::Result &DA) { - const Dependences &D = DA.getDependences(Dependences::AL_Statement); - const DataLayout &DL = S.getFunction().getParent()->getDataLayout(); - std::vector NewAccessStrings; - if (!importScop(S, D, DL, &NewAccessStrings)) - report_fatal_error("Tried to import a malformed jscop file."); +INITIALIZE_PASS_BEGIN(JSONExporter, "polly-export-jscop", + "Polly - Export Scops as JSON" + " (Writes a .jscop file for each Scop)", + false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo) +INITIALIZE_PASS_END(JSONExporter, "polly-export-jscop", + "Polly - Export Scops as JSON" + " (Writes a .jscop file for each Scop)", + false, false) + +INITIALIZE_PASS_BEGIN(JSONImporter, "polly-import-jscop", + "Polly - Import Scops from JSON" + " (Reads a .jscop file for each Scop)", + false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo) +INITIALIZE_PASS_END(JSONImporter, "polly-import-jscop", + "Polly - Import Scops from JSON" + " (Reads a .jscop file for each Scop)", + false, false) + +//===----------------------------------------------------------------------===// - if (PollyPrintImportJscop) { - outs() - << "Printing analysis 'Polly - Print Scop import result' for region: '" - << S.getRegion().getNameStr() << "' in function '" - << S.getFunction().getName() << "':\n"; - outs() << S; - for (std::vector::const_iterator I = NewAccessStrings.begin(), - E = NewAccessStrings.end(); - I != E; I++) - outs() << "New access function '" << *I << "' detected in JSCOP file\n"; +namespace { +/// Print result from JSONImporter. +class JSONImporterPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + JSONImporterPrinterLegacyPass() : JSONImporterPrinterLegacyPass(outs()) {} + explicit JSONImporterPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + JSONImporter &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char JSONImporterPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS) { + return new JSONImporterPrinterLegacyPass(OS); } -void polly::runExportJSON(Scop &S) { exportScop(S); } +INITIALIZE_PASS_BEGIN(JSONImporterPrinterLegacyPass, "polly-print-import-jscop", + "Polly - Print Scop import result", false, false) +INITIALIZE_PASS_DEPENDENCY(JSONImporter) +INITIALIZE_PASS_END(JSONImporterPrinterLegacyPass, "polly-print-import-jscop", + "Polly - Print Scop import result", false, false) diff --git a/polly/lib/Pass/PhaseManager.cpp b/polly/lib/Pass/PhaseManager.cpp deleted file mode 100644 index fb76c811859b8..0000000000000 --- a/polly/lib/Pass/PhaseManager.cpp +++ /dev/null @@ -1,424 +0,0 @@ -//===------ PhaseManager.cpp ------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "polly/Pass/PhaseManager.h" -#include "polly/CodeGen/CodeGeneration.h" -#include "polly/CodeGen/IslAst.h" -#include "polly/CodePreparation.h" -#include "polly/DeLICM.h" -#include "polly/DeadCodeElimination.h" -#include "polly/DependenceInfo.h" -#include "polly/FlattenSchedule.h" -#include "polly/ForwardOpTree.h" -#include "polly/JSONExporter.h" -#include "polly/MaximalStaticExpansion.h" -#include "polly/PruneUnprofitable.h" -#include "polly/ScheduleOptimizer.h" -#include "polly/ScopDetection.h" -#include "polly/ScopDetectionDiagnostic.h" -#include "polly/ScopGraphPrinter.h" -#include "polly/ScopInfo.h" -#include "polly/Simplify.h" -#include "llvm/Analysis/AssumptionCache.h" -#include "llvm/Analysis/OptimizationRemarkEmitter.h" -#include "llvm/IR/Module.h" - -#define DEBUG_TYPE "polly-pass" - -using namespace polly; -using namespace llvm; - -namespace { - -/// Recurse through all subregions and all regions and add them to RQ. -static void addRegionIntoQueue(Region &R, SmallVector &RQ) { - RQ.push_back(&R); - for (const auto &E : R) - addRegionIntoQueue(*E, RQ); -} - -/// The phase pipeline of Polly to be embedded into another pass manager than -/// runs passes on functions. -/// -/// Polly holds state besides LLVM-IR (RegionInfo and ScopInfo) between phases -/// that LLVM pass managers do not consider when scheduling analyses and passes. -/// That is, the ScopInfo must persist between phases that a pass manager must -/// not invalidate to recompute later. -class PhaseManager { -private: - Function &F; - FunctionAnalysisManager &FAM; - PollyPassOptions Opts; - -public: - PhaseManager(Function &F, FunctionAnalysisManager &FAM, PollyPassOptions Opts) - : F(F), FAM(FAM), Opts(std::move(Opts)) {} - - /// Execute Polly's phases as indicated by the options. - bool run() { - // Get analyses from the function pass manager. - // These must be preserved during all phases so that if processing one SCoP - // has finished, the next SCoP can still use them. Recomputing is not an - // option because ScopDetection stores references to the old results. - // TODO: CodePreparation doesn't actually need these analysis, it just keeps - // them up-to-date. If they are not computed yet, can also compute after the - // prepare phase. - LoopInfo &LI = FAM.getResult(F); - DominatorTree &DT = FAM.getResult(F); - bool ModifiedIR = false; - - // Phase: prepare - // TODO: Setting ModifiedIR will invalidate any analysis, even if DT, LI are - // preserved. - if (Opts.isPhaseEnabled(PassPhase::Prepare)) { - PreservedAnalyses PA = CodePreparationPass().run(F, FAM); - FAM.invalidate(F, PA); - if (!PA.areAllPreserved()) - ModifiedIR = true; - } - - // Can't do anything without detection - if (!Opts.isPhaseEnabled(PassPhase::Detection)) - return false; - - AAResults &AA = FAM.getResult(F); - ScalarEvolution &SE = FAM.getResult(F); - OptimizationRemarkEmitter &ORE = - FAM.getResult(F); - - // ScopDetection is modifying RegionInfo, do not cache it, nor use a cached - // version. - RegionInfo RI = RegionInfoAnalysis().run(F, FAM); - - // Phase: detection - ScopDetection SD(DT, SE, LI, RI, AA, ORE); - SD.detect(F); - if (Opts.isPhaseEnabled(PassPhase::PrintDetect)) { - outs() << "Detected Scops in Function " << F.getName() << "\n"; - for (const Region *R : SD.ValidRegions) - outs() << "Valid Region for Scop: " << R->getNameStr() << '\n'; - outs() << "\n"; - } - - if (Opts.isPhaseEnabled(PassPhase::DotScops)) - printGraphForFunction(F, &SD, "scops", false); - if (Opts.isPhaseEnabled(PassPhase::DotScopsOnly)) - printGraphForFunction(F, &SD, "scopsonly", true); - - auto ViewScops = [&](const char *Name, bool IsSimply) { - if (Opts.ViewFilter.empty() && !F.getName().count(Opts.ViewFilter)) - return; - - if (Opts.ViewAll || std::distance(SD.begin(), SD.end()) > 0) - viewGraphForFunction(F, &SD, Name, IsSimply); - }; - if (Opts.isPhaseEnabled(PassPhase::ViewScops)) - ViewScops("scops", false); - if (Opts.isPhaseEnabled(PassPhase::ViewScopsOnly)) - ViewScops("scopsonly", true); - - // Phase: scops - AssumptionCache &AC = FAM.getResult(F); - const DataLayout &DL = F.getParent()->getDataLayout(); - ScopInfo Info(DL, SD, SE, LI, AA, DT, AC, ORE); - if (Opts.isPhaseEnabled(PassPhase::PrintScopInfo)) { - if (Region *TLR = RI.getTopLevelRegion()) { - SmallVector Regions; - addRegionIntoQueue(*TLR, Regions); - - // reverse iteration because the regression tests expect it. - for (Region *R : reverse(Regions)) { - Scop *S = Info.getScop(R); - outs() << "Printing analysis 'Polly - Create polyhedral " - "description of Scops' for region: '" - << R->getNameStr() << "' in function '" << F.getName() - << "':\n"; - if (S) - outs() << *S; - else - outs() << "Invalid Scop!\n"; - } - } - } - - SmallPriorityWorklist Worklist; - for (auto &[R, S] : Info) - if (S) - Worklist.insert(R); - - TargetTransformInfo &TTI = FAM.getResult(F); - while (!Worklist.empty()) { - Region *R = Worklist.pop_back_val(); - if (!SD.isMaxRegionInScop(*R, /*Verify=*/false)) - continue; - Scop *S = Info.getScop(R); - - // Phase: flatten - if (Opts.isPhaseEnabled(PassPhase::Flatten)) - runFlattenSchedulePass(*S); - - // Phase: deps - // Actual analysis runs on-demand, so it does not matter whether the phase - // is actually enabled, but use this location to print dependencies. - DependenceAnalysis::Result DA = runDependenceAnalysis(*S); - if (Opts.isPhaseEnabled(PassPhase::PrintDependences)) { - assert(Opts.isPhaseEnabled(PassPhase::Dependences)); - const Dependences &D = DA.getDependences(Opts.PrintDepsAnalysisLevel); - D.print(outs()); - } - - // Phase: import-jscop - if (Opts.isPhaseEnabled(PassPhase::ImportJScop)) - runImportJSON(*S, DA); - - // Phase: simplify-0 - bool ModifiedSinceSimplify = true; - if (Opts.isPhaseEnabled(PassPhase::Simplify0)) { - runSimplify(*S, 0); - ModifiedSinceSimplify = false; - } - - // Phase: optree - if (Opts.isPhaseEnabled(PassPhase::Optree)) { - bool ModifiedByOptree = runForwardOpTree(*S); - ModifiedSinceSimplify |= ModifiedByOptree; - } - - // Phase: delicm - if (Opts.isPhaseEnabled(PassPhase::DeLICM)) { - bool ModifiedByDelicm = runDeLICM(*S); - ModifiedSinceSimplify |= ModifiedByDelicm; - } - - // Phase: simplify-1 - // If we have already run simplify-0, do not re-run it if the SCoP has not - // changed since then. - if (ModifiedSinceSimplify && Opts.isPhaseEnabled(PassPhase::Simplify1)) { - runSimplify(*S, 1); - ModifiedSinceSimplify = false; - } - - // Phase: dce - if (Opts.isPhaseEnabled(PassPhase::DeadCodeElimination)) - runDeadCodeElim(*S, DA); - - // Phase: mse - if (Opts.isPhaseEnabled(PassPhase::MaximumStaticExtension)) - runMaximalStaticExpansion(*S, DA); - - // Phase: prune - if (Opts.isPhaseEnabled(PassPhase::PruneUnprofitable)) - runPruneUnprofitable(*S); - - // Phase: opt-isl - if (Opts.isPhaseEnabled(PassPhase::Optimization)) - runIslScheduleOptimizer(*S, &TTI, DA); - - // Phase: import-jscop - if (Opts.isPhaseEnabled(PassPhase::ExportJScop)) - runExportJSON(*S); - - // Phase: ast - // Cannot run codegen unless ast is enabled - if (!Opts.isPhaseEnabled(PassPhase::AstGen)) - continue; - std::unique_ptr IslAst = runIslAstGen(*S, DA); - - // Phase: codegen - if (!Opts.isPhaseEnabled(PassPhase::CodeGen)) - continue; - bool ModifiedByCodeGen = runCodeGeneration(*S, RI, *IslAst); - if (ModifiedByCodeGen) { - ModifiedIR = true; - - // For all regions, create new polly::Scop objects because the old ones - // refere to invalidated LLVM-IR. - // FIXME: Adds all SCoPs again to statistics - Info.recompute(); - } - } - - return ModifiedIR; - } -}; -} // namespace - -StringRef polly::getPhaseName(PassPhase Phase) { - switch (Phase) { - case PassPhase::Prepare: - return "prepare"; - case PassPhase::Detection: - return "detect"; - case PassPhase::PrintDetect: - return "print-detect"; - case PassPhase::DotScops: - return "dot-scops"; - case PassPhase::DotScopsOnly: - return "dot-scops-only"; - case PassPhase::ViewScops: - return "view-scops"; - case PassPhase::ViewScopsOnly: - return "view-scops-only"; - case PassPhase::ScopInfo: - return "scops"; - case PassPhase::PrintScopInfo: - return "print-scops"; - case PassPhase::Flatten: - return "flatten"; - case PassPhase::Dependences: - return "deps"; - case PassPhase::PrintDependences: - return "print-deps"; - case PassPhase::ImportJScop: - return "import-jscop"; - case PassPhase::Simplify0: - return "simplify-0"; - case PassPhase::Optree: - return "optree"; - case PassPhase::DeLICM: - return "delicm"; - case PassPhase::Simplify1: - return "simplify-1"; - case PassPhase::DeadCodeElimination: - return "dce"; - case PassPhase::MaximumStaticExtension: - return "mse"; - case PassPhase::PruneUnprofitable: - return "prune"; - case PassPhase::Optimization: - return "opt-isl"; // "opt" would conflict with the llvm executable - case PassPhase::ExportJScop: - return "export-jscop"; - case PassPhase::AstGen: - return "ast"; - case PassPhase::CodeGen: - return "codegen"; - default: - llvm_unreachable("Unexpected phase"); - } -} - -PassPhase polly::parsePhase(StringRef Name) { - return StringSwitch(Name) - .Case("prepare", PassPhase::Prepare) - .Case("detect", PassPhase::Detection) - .Case("print-detect", PassPhase::PrintDetect) - .Case("dot-scops", PassPhase::DotScops) - .Case("dot-scops-only", PassPhase::DotScopsOnly) - .Case("view-scops", PassPhase::ViewScops) - .Case("view-scops-only", PassPhase::ViewScopsOnly) - .Case("scops", PassPhase::ScopInfo) - .Case("print-scops", PassPhase::PrintScopInfo) - .Case("flatten", PassPhase::Flatten) - .Case("deps", PassPhase::Dependences) - .Case("print-deps", PassPhase::PrintDependences) - .Case("import-jscop", PassPhase::ImportJScop) - .Case("simplify-0", PassPhase::Simplify0) - .Case("optree", PassPhase::Optree) - .Case("delicm", PassPhase::DeLICM) - .Case("simplify-1", PassPhase::Simplify1) - .Case("dce", PassPhase::DeadCodeElimination) - .Case("mse", PassPhase::MaximumStaticExtension) - .Case("prune", PassPhase::PruneUnprofitable) - .Case("opt-isl", PassPhase::Optimization) - .Case("export-jscop", PassPhase::ExportJScop) - .Case("ast", PassPhase::AstGen) - .Case("codegen", PassPhase::CodeGen) - .Default(PassPhase::None); -} - -bool polly::dependsOnDependenceInfo(PassPhase Phase) { - // Nothing before dep phase can depend on it - if (static_cast(Phase) <= static_cast(PassPhase::Dependences)) - return false; - - switch (Phase) { - case PassPhase::Simplify0: - case PassPhase::Optree: - case PassPhase::DeLICM: - case PassPhase::Simplify1: - case PassPhase::PruneUnprofitable: - case PassPhase::ImportJScop: - case PassPhase::ExportJScop: - case PassPhase::AstGen: // transitively through codegen - case PassPhase::CodeGen: - return false; - default: - return true; - } -} - -void PollyPassOptions::enableEnd2End() { - setPhaseEnabled(PassPhase::Detection); - setPhaseEnabled(PassPhase::ScopInfo); - setPhaseEnabled(PassPhase::Dependences); - setPhaseEnabled(PassPhase::AstGen); - setPhaseEnabled(PassPhase::CodeGen); -} - -void PollyPassOptions::enableDefaultOpts() { - setPhaseEnabled(PassPhase::Prepare); - setPhaseEnabled(PassPhase::Simplify0); - setPhaseEnabled(PassPhase::Optree); - setPhaseEnabled(PassPhase::DeLICM); - setPhaseEnabled(PassPhase::Simplify1); - setPhaseEnabled(PassPhase::PruneUnprofitable); - setPhaseEnabled(PassPhase::Optimization); -} - -void PollyPassOptions::disableAfter(PassPhase Phase) { - assert(Phase != PassPhase::None); - for (PassPhase P : enum_seq_inclusive(Phase, PassPhase::PassPhaseLast)) { - if (P == Phase) - continue; - setPhaseEnabled(P, false); - } -} - -Error PollyPassOptions::checkConsistency() const { - for (PassPhase P : enum_seq_inclusive(PassPhase::PassPhaseFirst, - PassPhase::PassPhaseLast)) { - if (!isPhaseEnabled(P)) - continue; - - // Prepare and Detection have no requirements - if (P == PassPhase::Prepare || P == PassPhase::Detection) - continue; - - if (!isPhaseEnabled(PassPhase::Detection)) - return make_error( - formatv("'{0}' requires 'detect' to be enabled", getPhaseName(P)) - .str(), - inconvertibleErrorCode()); - - if (static_cast(P) < static_cast(PassPhase::ScopInfo)) - continue; - - if (!isPhaseEnabled(PassPhase::ScopInfo)) - return make_error( - formatv("'{0}' requires 'scops' to be enabled", getPhaseName(P)) - .str(), - inconvertibleErrorCode()); - - if (dependsOnDependenceInfo(P) && !isPhaseEnabled(PassPhase::Dependences)) - return make_error( - formatv("'{0}' requires 'deps' to be enabled", getPhaseName(P)).str(), - inconvertibleErrorCode()); - } - - if (isPhaseEnabled(PassPhase::CodeGen) && !isPhaseEnabled(PassPhase::AstGen)) - return make_error("'codegen' requires 'ast' to be enabled", - inconvertibleErrorCode()); - - return Error::success(); -} - -bool polly::runPollyPass(Function &F, FunctionAnalysisManager &FAM, - PollyPassOptions Opts) { - return PhaseManager(F, FAM, std::move(Opts)).run(); -} diff --git a/polly/lib/Pass/PollyFunctionPass.cpp b/polly/lib/Pass/PollyFunctionPass.cpp deleted file mode 100644 index a478e4df2ca20..0000000000000 --- a/polly/lib/Pass/PollyFunctionPass.cpp +++ /dev/null @@ -1,22 +0,0 @@ -//===------ PollyFunctionPass.cpp - Polly function pass ------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "polly/Pass/PollyFunctionPass.h" - -using namespace llvm; -using namespace polly; - -PreservedAnalyses PollyFunctionPass::run(llvm::Function &F, - llvm::FunctionAnalysisManager &FAM) { - bool ModifiedIR = runPollyPass(F, FAM, Opts); - - // Be conservative about preserved analyses. - // FIXME: May also need to invalidate/update Module/CGSCC passes, but cannot - // reach them within a FunctionPassManager. - return ModifiedIR ? PreservedAnalyses::none() : PreservedAnalyses::all(); -} diff --git a/polly/lib/Pass/PollyModulePass.cpp b/polly/lib/Pass/PollyModulePass.cpp deleted file mode 100644 index f56ee672b76af..0000000000000 --- a/polly/lib/Pass/PollyModulePass.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===------ PollyModulePass.cpp - Polly module pass ----------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "polly/Pass/PollyModulePass.h" -#include "llvm/IR/Module.h" - -using namespace llvm; -using namespace polly; - -PreservedAnalyses PollyModulePass::run(llvm::Module &M, - llvm::ModuleAnalysisManager &MAM) { - FunctionAnalysisManager &FAM = - MAM.getResult(M).getManager(); - - bool ModifiedAnyIR = false; - for (Function &F : M) { - bool LocalModifiedIR = runPollyPass(F, FAM, Opts); - ModifiedAnyIR |= LocalModifiedIR; - } - - // Be conservative about preserved analyses, especially if parallel functions - // have been outlined. - return ModifiedAnyIR ? PreservedAnalyses::none() : PreservedAnalyses::all(); -} diff --git a/polly/lib/Support/DumpFunctionPass.cpp b/polly/lib/Support/DumpFunctionPass.cpp index 9565e2156aee6..e47b7fe0db966 100644 --- a/polly/lib/Support/DumpFunctionPass.cpp +++ b/polly/lib/Support/DumpFunctionPass.cpp @@ -13,6 +13,7 @@ #include "polly/Support/DumpFunctionPass.h" #include "llvm/IR/Module.h" #include "llvm/IR/PassInstrumentation.h" +#include "llvm/Pass.h" #include "llvm/Support/Debug.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" @@ -81,10 +82,50 @@ static void runDumpFunction(llvm::Function &F, StringRef Suffix) { Out->keep(); LLVM_DEBUG(dbgs() << "Dump file " << Dumpfile << " written successfully\n"); } + +class DumpFunctionWrapperPass final : public FunctionPass { +private: + DumpFunctionWrapperPass(const DumpFunctionWrapperPass &) = delete; + const DumpFunctionWrapperPass & + operator=(const DumpFunctionWrapperPass &) = delete; + + std::string Suffix; + +public: + static char ID; + + explicit DumpFunctionWrapperPass() : FunctionPass(ID), Suffix("-dump") {} + + explicit DumpFunctionWrapperPass(std::string Suffix) + : FunctionPass(ID), Suffix(std::move(Suffix)) {} + + /// @name FunctionPass interface + //@{ + void getAnalysisUsage(llvm::AnalysisUsage &AU) const override { + AU.setPreservesAll(); + } + + bool runOnFunction(llvm::Function &F) override { + runDumpFunction(F, Suffix); + return false; + } + //@} +}; + +char DumpFunctionWrapperPass::ID; } // namespace +FunctionPass *polly::createDumpFunctionWrapperPass(std::string Suffix) { + return new DumpFunctionWrapperPass(std::move(Suffix)); +} + llvm::PreservedAnalyses DumpFunctionPass::run(Function &F, FunctionAnalysisManager &AM) { runDumpFunction(F, Suffix); return PreservedAnalyses::all(); } + +INITIALIZE_PASS_BEGIN(DumpFunctionWrapperPass, "polly-dump-function", + "Polly - Dump Function", false, false) +INITIALIZE_PASS_END(DumpFunctionWrapperPass, "polly-dump-function", + "Polly - Dump Function", false, false) diff --git a/polly/lib/Support/DumpModulePass.cpp b/polly/lib/Support/DumpModulePass.cpp index 2eaa0707fe571..c1c27ef6ac757 100644 --- a/polly/lib/Support/DumpModulePass.cpp +++ b/polly/lib/Support/DumpModulePass.cpp @@ -12,6 +12,7 @@ #include "polly/Support/DumpModulePass.h" #include "llvm/IR/Module.h" +#include "llvm/Pass.h" #include "llvm/Support/Debug.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" @@ -46,10 +47,56 @@ static void runDumpModule(llvm::Module &M, StringRef Filename, bool IsSuffix) { M.print(Out->os(), nullptr); Out->keep(); } + +class DumpModuleWrapperPass final : public ModulePass { +private: + DumpModuleWrapperPass(const DumpModuleWrapperPass &) = delete; + const DumpModuleWrapperPass & + operator=(const DumpModuleWrapperPass &) = delete; + + std::string Filename; + bool IsSuffix; + +public: + static char ID; + + /// This constructor is used e.g. if using opt -polly-dump-module. + /// + /// Provide a default suffix to not overwrite the original file. + explicit DumpModuleWrapperPass() + : ModulePass(ID), Filename("-dump"), IsSuffix(true) {} + + explicit DumpModuleWrapperPass(std::string Filename, bool IsSuffix) + : ModulePass(ID), Filename(std::move(Filename)), IsSuffix(IsSuffix) {} + + /// @name ModulePass interface + //@{ + void getAnalysisUsage(llvm::AnalysisUsage &AU) const override { + AU.setPreservesAll(); + } + + bool runOnModule(llvm::Module &M) override { + runDumpModule(M, Filename, IsSuffix); + return false; + } + //@} +}; + +char DumpModuleWrapperPass::ID; } // namespace +ModulePass *polly::createDumpModuleWrapperPass(std::string Filename, + bool IsSuffix) { + return new DumpModuleWrapperPass(std::move(Filename), IsSuffix); +} + llvm::PreservedAnalyses DumpModulePass::run(llvm::Module &M, llvm::ModuleAnalysisManager &AM) { runDumpModule(M, Filename, IsSuffix); return PreservedAnalyses::all(); } + +INITIALIZE_PASS_BEGIN(DumpModuleWrapperPass, "polly-dump-module", + "Polly - Dump Module", false, false) +INITIALIZE_PASS_END(DumpModuleWrapperPass, "polly-dump-module", + "Polly - Dump Module", false, false) diff --git a/polly/lib/Support/PollyPasses.def b/polly/lib/Support/PollyPasses.def index 496839760a844..2c792a5867100 100644 --- a/polly/lib/Support/PollyPasses.def +++ b/polly/lib/Support/PollyPasses.def @@ -1,10 +1,3 @@ -#ifndef MODULE_PASS -#define MODULE_PASS(NAME, CREATE_PASS, PARSER) -#endif -MODULE_PASS("polly", createModuleToFunctionPassAdaptor(PollyFunctionPass(Opts)), parsePollyDefaultOptions) -MODULE_PASS("polly-custom", createModuleToFunctionPassAdaptor(PollyFunctionPass(Opts)), parsePollyCustomOptions) -#undef MODULE_PASS - #ifndef CGSCC_PASS #define CGSCC_PASS(NAME, CREATE_PASS, PARSER) #endif @@ -19,17 +12,15 @@ FUNCTION_ANALYSIS("polly-function-scops", ScopInfoAnalysis()) #undef FUNCTION_ANALYSIS #ifndef FUNCTION_PASS -#define FUNCTION_PASS(NAME, CREATE_PASS, PARSER) +#define FUNCTION_PASS(NAME, CREATE_PASS) #endif -FUNCTION_PASS("polly-prepare", CodePreparationPass(), parseNoOptions) -FUNCTION_PASS("print", ScopAnalysisPrinterPass(llvm::errs()), parseNoOptions) -FUNCTION_PASS("print", ScopInfoPrinterPass(llvm::errs()), parseNoOptions) -FUNCTION_PASS("polly-scop-viewer", ScopViewer(), parseNoOptions) -FUNCTION_PASS("polly-scop-only-viewer", ScopOnlyViewer(), parseNoOptions) -FUNCTION_PASS("polly-scop-printer", ScopPrinter(), parseNoOptions) -FUNCTION_PASS("polly-scop-only-printer", ScopOnlyPrinter(), parseNoOptions) -FUNCTION_PASS("polly", PollyFunctionPass(Opts), parsePollyDefaultOptions) -FUNCTION_PASS("polly-custom", PollyFunctionPass(Opts), parsePollyCustomOptions) +FUNCTION_PASS("polly-prepare", CodePreparationPass()) +FUNCTION_PASS("print", ScopAnalysisPrinterPass(llvm::errs())) +FUNCTION_PASS("print", ScopInfoPrinterPass(llvm::errs())) +FUNCTION_PASS("polly-scop-viewer", ScopViewer()) +FUNCTION_PASS("polly-scop-only-viewer", ScopOnlyViewer()) +FUNCTION_PASS("polly-scop-printer", ScopPrinter()) +FUNCTION_PASS("polly-scop-only-printer", ScopOnlyPrinter()) #undef FUNCTION_PASS #ifndef SCOP_ANALYSIS diff --git a/polly/lib/Support/RegisterPasses.cpp b/polly/lib/Support/RegisterPasses.cpp index 2f1d7a8362349..04f8715502c38 100644 --- a/polly/lib/Support/RegisterPasses.cpp +++ b/polly/lib/Support/RegisterPasses.cpp @@ -28,9 +28,8 @@ #include "polly/DependenceInfo.h" #include "polly/ForwardOpTree.h" #include "polly/JSONExporter.h" +#include "polly/LinkAllPasses.h" #include "polly/MaximalStaticExpansion.h" -#include "polly/Options.h" -#include "polly/Pass/PollyFunctionPass.h" #include "polly/PruneUnprofitable.h" #include "polly/ScheduleOptimizer.h" #include "polly/ScopDetection.h" @@ -53,8 +52,6 @@ #include "llvm/Transforms/IPO.h" using namespace llvm; -using namespace polly; - namespace cl = llvm::cl; using namespace polly; @@ -204,19 +201,58 @@ static cl::opt EnablePruneUnprofitable( cl::desc("Bail out on unprofitable SCoPs before rescheduling"), cl::Hidden, cl::init(true), cl::cat(PollyCategory)); -static cl::opt - PollyPrintDetect("polly-print-detect", - cl::desc("Polly - Print static control parts (SCoPs)"), - cl::cat(PollyCategory)); - -static cl::opt - PollyPrintScops("polly-print-scops", - cl::desc("Print polyhedral description of all regions"), - cl::cat(PollyCategory)); +namespace { -static cl::opt PollyPrintDeps("polly-print-deps", - cl::desc("Polly - Print dependences"), - cl::cat(PollyCategory)); +/// Initialize Polly passes when library is loaded. +/// +/// We use the constructor of a statically declared object to initialize the +/// different Polly passes right after the Polly library is loaded. This ensures +/// that the Polly passes are available e.g. in the 'opt' tool. +struct StaticInitializer { + StaticInitializer() { + llvm::PassRegistry &Registry = *llvm::PassRegistry::getPassRegistry(); + polly::initializePollyPasses(Registry); + } +}; +static StaticInitializer InitializeEverything; +} // end of anonymous namespace. + +void initializePollyPasses(llvm::PassRegistry &Registry) { + initializeCodeGenerationPass(Registry); + + initializeCodePreparationPass(Registry); + initializeDeadCodeElimWrapperPassPass(Registry); + initializeDependenceInfoPass(Registry); + initializeDependenceInfoPrinterLegacyPassPass(Registry); + initializeDependenceInfoWrapperPassPass(Registry); + initializeDependenceInfoPrinterLegacyFunctionPassPass(Registry); + initializeJSONExporterPass(Registry); + initializeJSONImporterPass(Registry); + initializeJSONImporterPrinterLegacyPassPass(Registry); + initializeMaximalStaticExpanderWrapperPassPass(Registry); + initializeIslAstInfoWrapperPassPass(Registry); + initializeIslAstInfoPrinterLegacyPassPass(Registry); + initializeIslScheduleOptimizerWrapperPassPass(Registry); + initializeIslScheduleOptimizerPrinterLegacyPassPass(Registry); + initializePollyCanonicalizePass(Registry); + initializeScopDetectionWrapperPassPass(Registry); + initializeScopDetectionPrinterLegacyPassPass(Registry); + initializeScopInlinerWrapperPassPass(Registry); + initializeScopInfoRegionPassPass(Registry); + initializeScopInfoPrinterLegacyRegionPassPass(Registry); + initializeScopInfoWrapperPassPass(Registry); + initializeScopInfoPrinterLegacyFunctionPassPass(Registry); + initializeFlattenSchedulePass(Registry); + initializeFlattenSchedulePrinterLegacyPassPass(Registry); + initializeForwardOpTreeWrapperPassPass(Registry); + initializeForwardOpTreePrinterLegacyPassPass(Registry); + initializeDeLICMWrapperPassPass(Registry); + initializeDeLICMPrinterLegacyPassPass(Registry); + initializeSimplifyWrapperPassPass(Registry); + initializeSimplifyPrinterLegacyPassPass(Registry); + initializeDumpModuleWrapperPassPass(Registry); + initializePruneUnprofitableWrapperPassPass(Registry); +} static bool shouldEnablePollyForOptimization() { return PollyEnabled; } @@ -230,198 +266,6 @@ static bool shouldEnablePollyForDiagnostic() { ExportJScop; } -/// Parser of parameters for LoopVectorize pass. -static llvm::Expected parsePollyOptions(StringRef Params, - bool IsCustom) { - PassPhase PrevPhase = PassPhase::None; - - bool EnableDefaultOpts = !IsCustom; - bool EnableEnd2End = !IsCustom; - std::optional - PassEnabled[static_cast(PassPhase::PassPhaseLast) + 1]; - PassPhase StopAfter = PassPhase::None; - - // Passes enabled using command-line flags (can be overridden using - // 'polly') - if (PollyPrintDetect) - PassEnabled[static_cast(PassPhase::PrintDetect)] = true; - if (PollyPrintScops) - PassEnabled[static_cast(PassPhase::PrintScopInfo)] = true; - if (PollyPrintDeps) - PassEnabled[static_cast(PassPhase::PrintDependences)] = true; - - if (PollyViewer) - PassEnabled[static_cast(PassPhase::ViewScops)] = true; - if (PollyOnlyViewer) - PassEnabled[static_cast(PassPhase::ViewScopsOnly)] = true; - if (PollyPrinter) - PassEnabled[static_cast(PassPhase::DotScops)] = true; - if (PollyOnlyPrinter) - PassEnabled[static_cast(PassPhase::DotScopsOnly)] = true; - if (!EnableSimplify) - PassEnabled[static_cast(PassPhase::Simplify0)] = false; - if (!EnableForwardOpTree) - PassEnabled[static_cast(PassPhase::Optree)] = false; - if (!EnableDeLICM) - PassEnabled[static_cast(PassPhase::DeLICM)] = false; - if (!EnableSimplify) - PassEnabled[static_cast(PassPhase::Simplify1)] = false; - if (ImportJScop) - PassEnabled[static_cast(PassPhase::ImportJScop)] = true; - if (DeadCodeElim) - PassEnabled[static_cast(PassPhase::DeadCodeElimination)] = true; - if (FullyIndexedStaticExpansion) - PassEnabled[static_cast(PassPhase::MaximumStaticExtension)] = true; - if (!EnablePruneUnprofitable) - PassEnabled[static_cast(PassPhase::PruneUnprofitable)] = false; - switch (Optimizer) { - case OPTIMIZER_NONE: - // explicitly switched off - PassEnabled[static_cast(PassPhase::Optimization)] = false; - break; - case OPTIMIZER_ISL: - // default: enabled - break; - } - if (ExportJScop) - PassEnabled[static_cast(PassPhase::ExportJScop)] = true; - switch (CodeGeneration) { - case CODEGEN_AST: - PassEnabled[static_cast(PassPhase::AstGen)] = true; - PassEnabled[static_cast(PassPhase::CodeGen)] = false; - break; - case CODEGEN_FULL: - // default: ast and codegen enabled - break; - case CODEGEN_NONE: - PassEnabled[static_cast(PassPhase::AstGen)] = false; - PassEnabled[static_cast(PassPhase::CodeGen)] = false; - break; - } - - while (!Params.empty()) { - StringRef Param; - std::tie(Param, Params) = Params.split(';'); - auto [ParamName, ParamVal] = Param.split('='); - - if (ParamName == "stopafter") { - StopAfter = parsePhase(ParamVal); - if (StopAfter == PassPhase::None) - return make_error( - formatv("invalid stopafter parameter value '{0}'", ParamVal).str(), - inconvertibleErrorCode()); - continue; - } - - if (!ParamVal.empty()) - return make_error( - formatv("parameter '{0}' does not take value", ParamName).str(), - inconvertibleErrorCode()); - - bool Enabled = true; - if (ParamName.starts_with("no-")) { - Enabled = false; - ParamName = ParamName.drop_front(3); - } - - if (ParamName == "default-opts") { - EnableDefaultOpts = Enabled; - continue; - } - - if (ParamName == "end2end") { - EnableEnd2End = Enabled; - continue; - } - - PassPhase Phase; - - // Shortcut for both simplifys at the same time - if (ParamName == "simplify") { - PassEnabled[static_cast(PassPhase::Simplify0)] = Enabled; - PassEnabled[static_cast(PassPhase::Simplify1)] = Enabled; - Phase = PassPhase::Simplify0; - } else { - Phase = parsePhase(ParamName); - if (Phase == PassPhase::None) - return make_error( - formatv("invalid Polly parameter/phase name '{0}'", ParamName) - .str(), - inconvertibleErrorCode()); - - if (PrevPhase >= Phase) - return make_error( - formatv("phases must not be repeated and enumerated in-order: " - "'{0}' listed before '{1}'", - getPhaseName(PrevPhase), getPhaseName(Phase)) - .str(), - inconvertibleErrorCode()); - - PassEnabled[static_cast(Phase)] = Enabled; - } - PrevPhase = Phase; - } - - PollyPassOptions Opts; - Opts.ViewAll = ViewAll; - Opts.ViewFilter = ViewFilter; - Opts.PrintDepsAnalysisLevel = OptAnalysisLevel; - - // Implicitly enable dependent phases first. May be overriden explicitly - // on/off later. - for (PassPhase P : llvm::enum_seq_inclusive(PassPhase::PassPhaseFirst, - PassPhase::PassPhaseLast)) { - bool Enabled = PassEnabled[static_cast(P)].value_or(false); - if (!Enabled) - continue; - - if (static_cast(PassPhase::Detection) < static_cast(P)) - Opts.setPhaseEnabled(PassPhase::Detection); - - if (static_cast(PassPhase::ScopInfo) < static_cast(P)) - Opts.setPhaseEnabled(PassPhase::ScopInfo); - - if (dependsOnDependenceInfo(P)) - Opts.setPhaseEnabled(PassPhase::Dependences); - - if (static_cast(PassPhase::AstGen) < static_cast(P)) - Opts.setPhaseEnabled(PassPhase::AstGen); - } - - if (EnableEnd2End) - Opts.enableEnd2End(); - - if (EnableDefaultOpts) - Opts.enableDefaultOpts(); - - for (PassPhase P : llvm::enum_seq_inclusive(PassPhase::PassPhaseFirst, - PassPhase::PassPhaseLast)) { - std::optional Enabled = PassEnabled[static_cast(P)]; - - // Apply only if set explicitly. - if (Enabled.has_value()) - Opts.setPhaseEnabled(P, *Enabled); - } - - if (StopAfter != PassPhase::None) - Opts.disableAfter(StopAfter); - - if (Error CheckResult = Opts.checkConsistency()) - return CheckResult; - - return Opts; -} - -static llvm::Expected -parsePollyDefaultOptions(StringRef Params) { - return parsePollyOptions(Params, false); -} - -static llvm::Expected -parsePollyCustomOptions(StringRef Params) { - return parsePollyOptions(Params, true); -} - /// Register Polly passes such that they form a polyhedral optimizer. /// /// The individual Polly passes are registered in the pass manager such that @@ -461,12 +305,77 @@ static void buildCommonPollyPipeline(FunctionPassManager &PM, OptimizationLevel Level, bool EnableForOpt) { PassBuilder PB; + ScopPassManager SPM; + + PM.addPass(CodePreparationPass()); + + // TODO add utility passes for the various command line options, once they're + // ported + + if (PollyDetectOnly) { + // Don't add more passes other than the ScopPassManager's detection passes. + PM.addPass(createFunctionToScopPassAdaptor(std::move(SPM))); + return; + } - ExitOnError Err("Inconsistent Polly configuration: "); - PollyPassOptions &&Opts = - Err(parsePollyOptions(StringRef(), /*IsCustom=*/false)); - PM.addPass(PollyFunctionPass(Opts)); + if (PollyViewer) + PM.addPass(ScopViewer()); + if (PollyOnlyViewer) + PM.addPass(ScopOnlyViewer()); + if (PollyPrinter) + PM.addPass(ScopPrinter()); + if (PollyOnlyPrinter) + PM.addPass(ScopOnlyPrinter()); + if (EnableSimplify) + SPM.addPass(SimplifyPass(0)); + if (EnableForwardOpTree) + SPM.addPass(ForwardOpTreePass()); + if (EnableDeLICM) + SPM.addPass(DeLICMPass()); + if (EnableSimplify) + SPM.addPass(SimplifyPass(1)); + + if (ImportJScop) + SPM.addPass(JSONImportPass()); + + if (DeadCodeElim) + SPM.addPass(DeadCodeElimPass()); + + if (FullyIndexedStaticExpansion) + SPM.addPass(MaximalStaticExpansionPass()); + + if (EnablePruneUnprofitable) + SPM.addPass(PruneUnprofitablePass()); + + switch (Optimizer) { + case OPTIMIZER_NONE: + break; /* Do nothing */ + case OPTIMIZER_ISL: + SPM.addPass(IslScheduleOptimizerPass()); + break; + } + + if (ExportJScop) + SPM.addPass(JSONExportPass()); + + if (!EnableForOpt) + return; + + switch (CodeGeneration) { + case CODEGEN_AST: + SPM.addPass( + llvm::RequireAnalysisPass()); + break; + case CODEGEN_FULL: + SPM.addPass(CodeGenerationPass()); + break; + case CODEGEN_NONE: + break; + } + PM.addPass(createFunctionToScopPassAdaptor(std::move(SPM))); PM.addPass(PB.buildFunctionSimplificationPipeline( Level, llvm::ThinOrFullLTOPhase::None)); // Cleanup @@ -583,9 +492,8 @@ parseCGPipeline(StringRef Name, llvm::CGSCCPassManager &CGPM, return false; } -static llvm::Expected +static bool parseFunctionPipeline(StringRef Name, FunctionPassManager &FPM, - PassInstrumentationCallbacks *PIC, ArrayRef Pipeline) { if (llvm::parseAnalysisUtilityPasses( "polly-scop-analyses", Name, FPM)) @@ -597,13 +505,8 @@ parseFunctionPipeline(StringRef Name, FunctionPassManager &FPM, FPM)) \ return true; -#define FUNCTION_PASS(NAME, CREATE_PASS, PARSER) \ - if (PassBuilder::checkParametrizedPassName(Name, NAME)) { \ - auto ExpectedOpts = PassBuilder::parsePassParameters(PARSER, Name, NAME); \ - if (!ExpectedOpts) \ - return ExpectedOpts.takeError(); \ - auto &&Opts = *ExpectedOpts; \ - (void)Opts; \ +#define FUNCTION_PASS(NAME, CREATE_PASS) \ + if (Name == NAME) { \ FPM.addPass(CREATE_PASS); \ return true; \ } @@ -689,28 +592,6 @@ parseTopLevelPipeline(llvm::ModulePassManager &MPM, return true; } -static llvm::Expected -parseModulePipeline(StringRef Name, llvm::ModulePassManager &MPM, - PassInstrumentationCallbacks *PIC, - ArrayRef Pipeline) { - assert(Pipeline.empty()); - -#define MODULE_PASS(NAME, CREATE_PASS, PARSER) \ - if (PassBuilder::checkParametrizedPassName(Name, NAME)) { \ - auto ExpectedOpts = PassBuilder::parsePassParameters(PARSER, Name, NAME); \ - if (!ExpectedOpts) \ - return ExpectedOpts.takeError(); \ - auto &&Opts = *ExpectedOpts; \ - (void)Opts; \ - MPM.addPass(CREATE_PASS); \ - return true; \ - } - -#include "PollyPasses.def" - - return false; -} - /// Register Polly to be available as an optimizer /// /// @@ -739,36 +620,10 @@ parseModulePipeline(StringRef Name, llvm::ModulePassManager &MPM, /// handle LICMed code to make it useful. void registerPollyPasses(PassBuilder &PB) { PassInstrumentationCallbacks *PIC = PB.getPassInstrumentationCallbacks(); - -#define MODULE_PASS(NAME, CREATE_PASS, PARSER) \ - { \ - std::remove_reference_t Opts; \ - (void)Opts; \ - PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); \ - } -#define CGSCC_PASS(NAME, CREATE_PASS, PARSER) \ - { \ - std::remove_reference_t Opts; \ - (void)Opts; \ - PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); \ - } -#define FUNCTION_PASS(NAME, CREATE_PASS, PARSER) \ - { \ - std::remove_reference_t Opts; \ - (void)Opts; \ - PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); \ - } -#include "PollyPasses.def" - PB.registerAnalysisRegistrationCallback([PIC](FunctionAnalysisManager &FAM) { registerFunctionAnalyses(FAM, PIC); }); - PB.registerPipelineParsingCallback( - [PIC](StringRef Name, FunctionPassManager &FPM, - ArrayRef Pipeline) -> bool { - ExitOnError Err("Unable to parse Polly module pass: "); - return Err(parseFunctionPipeline(Name, FPM, PIC, Pipeline)); - }); + PB.registerPipelineParsingCallback(parseFunctionPipeline); PB.registerPipelineParsingCallback( [PIC](StringRef Name, FunctionPassManager &FPM, ArrayRef Pipeline) -> bool { @@ -780,12 +635,6 @@ void registerPollyPasses(PassBuilder &PB) { ExitOnError Err("Unable to parse Polly call graph pass: "); return Err(parseCGPipeline(Name, CGPM, PIC, Pipeline)); }); - PB.registerPipelineParsingCallback( - [PIC](StringRef Name, ModulePassManager &MPM, - ArrayRef Pipeline) -> bool { - ExitOnError Err("Unable to parse Polly module pass: "); - return Err(parseModulePipeline(Name, MPM, PIC, Pipeline)); - }); PB.registerParseTopLevelPipelineCallback( [PIC](llvm::ModulePassManager &MPM, ArrayRef Pipeline) -> bool { diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp index cf0ec4432f747..a2328d1bbb3cf 100644 --- a/polly/lib/Support/ScopHelper.cpp +++ b/polly/lib/Support/ScopHelper.cpp @@ -206,6 +206,18 @@ void polly::splitEntryBlockForAlloca(BasicBlock *EntryBlock, DominatorTree *DT, splitBlock(EntryBlock, I, DT, LI, RI); } +void polly::splitEntryBlockForAlloca(BasicBlock *EntryBlock, Pass *P) { + auto *DTWP = P->getAnalysisIfAvailable(); + auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; + auto *LIWP = P->getAnalysisIfAvailable(); + auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr; + RegionInfoPass *RIP = P->getAnalysisIfAvailable(); + RegionInfo *RI = RIP ? &RIP->getRegionInfo() : nullptr; + + // splitBlock updates DT, LI and RI. + polly::splitEntryBlockForAlloca(EntryBlock, DT, LI, RI); +} + void polly::recordAssumption(polly::RecordedAssumptionsTy *RecordedAssumptions, polly::AssumptionKind Kind, isl::set Set, DebugLoc Loc, polly::AssumptionSign Sign, diff --git a/polly/lib/Transform/Canonicalization.cpp b/polly/lib/Transform/Canonicalization.cpp index cd7195f5374df..1be560e64af40 100644 --- a/polly/lib/Transform/Canonicalization.cpp +++ b/polly/lib/Transform/Canonicalization.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "polly/Canonicalization.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "llvm/Analysis/GlobalsModRef.h" #include "llvm/Analysis/ProfileSummaryInfo.h" @@ -38,6 +39,24 @@ static cl::opt cl::desc("Run an early inliner pass before Polly"), cl::Hidden, cl::cat(PollyCategory)); +void polly::registerCanonicalicationPasses(llvm::legacy::PassManagerBase &PM) { + bool UseMemSSA = true; + PM.add(llvm::createPromoteMemoryToRegisterPass()); + PM.add(llvm::createEarlyCSEPass(UseMemSSA)); + PM.add(llvm::createInstructionCombiningPass()); + PM.add(llvm::createCFGSimplificationPass()); + PM.add(llvm::createTailCallEliminationPass()); + PM.add(llvm::createCFGSimplificationPass()); + PM.add(llvm::createReassociatePass()); + if (PollyInliner) { + PM.add(llvm::createPromoteMemoryToRegisterPass()); + PM.add(llvm::createCFGSimplificationPass()); + PM.add(llvm::createInstructionCombiningPass()); + PM.add(createBarrierNoopPass()); + } + PM.add(llvm::createInstructionCombiningPass()); +} + /// Adapted from llvm::PassBuilder::buildInlinerPipeline static ModuleInlinerWrapperPass buildInlinePasses(llvm::OptimizationLevel Level) { @@ -106,3 +125,49 @@ polly::buildCanonicalicationPassesForNPM(llvm::ModulePassManager &MPM, return FPM; } + +namespace { +class PollyCanonicalize final : public ModulePass { + PollyCanonicalize(const PollyCanonicalize &) = delete; + const PollyCanonicalize &operator=(const PollyCanonicalize &) = delete; + +public: + static char ID; + + explicit PollyCanonicalize() : ModulePass(ID) {} + ~PollyCanonicalize(); + + /// @name FunctionPass interface. + //@{ + void getAnalysisUsage(AnalysisUsage &AU) const override; + void releaseMemory() override; + bool runOnModule(Module &M) override; + void print(raw_ostream &OS, const Module *) const override; + //@} +}; +} // namespace + +PollyCanonicalize::~PollyCanonicalize() {} + +void PollyCanonicalize::getAnalysisUsage(AnalysisUsage &AU) const {} + +void PollyCanonicalize::releaseMemory() {} + +bool PollyCanonicalize::runOnModule(Module &M) { + legacy::PassManager PM; + registerCanonicalicationPasses(PM); + PM.run(M); + + return true; +} + +void PollyCanonicalize::print(raw_ostream &OS, const Module *) const {} + +char PollyCanonicalize::ID = 0; + +Pass *polly::createPollyCanonicalizePass() { return new PollyCanonicalize(); } + +INITIALIZE_PASS_BEGIN(PollyCanonicalize, "polly-canonicalize", + "Polly - Run canonicalization passes", false, false) +INITIALIZE_PASS_END(PollyCanonicalize, "polly-canonicalize", + "Polly - Run canonicalization passes", false, false) diff --git a/polly/lib/Transform/CodePreparation.cpp b/polly/lib/Transform/CodePreparation.cpp index 5b96c865ad80f..d045fb6b62c90 100644 --- a/polly/lib/Transform/CodePreparation.cpp +++ b/polly/lib/Transform/CodePreparation.cpp @@ -16,11 +16,13 @@ //===----------------------------------------------------------------------===// #include "polly/CodePreparation.h" +#include "polly/LinkAllPasses.h" #include "polly/Support/ScopHelper.h" #include "llvm/Analysis/DominanceFrontier.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/RegionInfo.h" #include "llvm/Analysis/ScalarEvolution.h" +#include "llvm/InitializePasses.h" using namespace llvm; using namespace polly; @@ -45,6 +47,32 @@ static bool runCodePreprationImpl(Function &F, DominatorTree *DT, LoopInfo *LI, return true; } +namespace { + +/// Prepare the IR for the scop detection. +/// +class CodePreparation final : public FunctionPass { + CodePreparation(const CodePreparation &) = delete; + const CodePreparation &operator=(const CodePreparation &) = delete; + + void clear(); + +public: + static char ID; + + explicit CodePreparation() : FunctionPass(ID) {} + ~CodePreparation(); + + /// @name FunctionPass interface. + //@{ + void getAnalysisUsage(AnalysisUsage &AU) const override; + void releaseMemory() override; + bool runOnFunction(Function &F) override; + void print(raw_ostream &OS, const Module *) const override; + //@} +}; +} // namespace + PreservedAnalyses CodePreparationPass::run(Function &F, FunctionAnalysisManager &FAM) { auto &DT = FAM.getResult(F); @@ -58,3 +86,44 @@ PreservedAnalyses CodePreparationPass::run(Function &F, PA.preserve(); return PA; } + +void CodePreparation::clear() {} + +CodePreparation::~CodePreparation() { clear(); } + +void CodePreparation::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); + AU.addPreserved(); +} + +bool CodePreparation::runOnFunction(Function &F) { + if (skipFunction(F)) + return false; + + DominatorTree *DT = &getAnalysis().getDomTree(); + LoopInfo *LI = &getAnalysis().getLoopInfo(); + RegionInfo *RI = &getAnalysis().getRegionInfo(); + + runCodePreprationImpl(F, DT, LI, RI); + + return true; +} + +void CodePreparation::releaseMemory() { clear(); } + +void CodePreparation::print(raw_ostream &OS, const Module *) const {} + +char CodePreparation::ID = 0; +char &polly::CodePreparationID = CodePreparation::ID; + +Pass *polly::createCodePreparationPass() { return new CodePreparation(); } + +INITIALIZE_PASS_BEGIN(CodePreparation, "polly-prepare", + "Polly - Prepare code for polly", false, false) +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass) +INITIALIZE_PASS_END(CodePreparation, "polly-prepare", + "Polly - Prepare code for polly", false, false) diff --git a/polly/lib/Transform/DeLICM.cpp b/polly/lib/Transform/DeLICM.cpp index e8f2d951404f3..9a9768afe113e 100644 --- a/polly/lib/Transform/DeLICM.cpp +++ b/polly/lib/Transform/DeLICM.cpp @@ -15,6 +15,7 @@ //===----------------------------------------------------------------------===// #include "polly/DeLICM.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/ScopPass.h" @@ -24,6 +25,7 @@ #include "polly/ZoneAlgo.h" #include "llvm/ADT/Statistic.h" #include "llvm/IR/Module.h" +#include "llvm/InitializePasses.h" #include "polly/Support/PollyDebug.h" #define DEBUG_TYPE "polly-delicm" @@ -33,10 +35,6 @@ using namespace llvm; namespace { -static cl::opt PollyPrintDeLICM("polly-print-delicm", - cl::desc("Polly - Print DeLICM/DePRE"), - cl::cat(PollyCategory)); - cl::opt DelicmMaxOps("polly-delicm-max-ops", cl::desc("Maximum number of isl operations to invest for " @@ -1358,10 +1356,7 @@ class DeLICMImpl final : public ZoneAlgorithm { } /// Return whether at least one transformation been applied. - bool isModified() const { - return NumberOfTargetsMapped > 0 || NumberOfMappedValueScalars > 0 || - NumberOfMappedPHIScalars > 0; - } + bool isModified() const { return NumberOfTargetsMapped > 0; } }; static std::unique_ptr collapseToUnused(Scop &S, LoopInfo &LI) { @@ -1381,7 +1376,7 @@ static std::unique_ptr collapseToUnused(Scop &S, LoopInfo &LI) { return Impl; } -static std::unique_ptr runDeLICMImpl(Scop &S, LoopInfo &LI) { +static std::unique_ptr runDeLICM(Scop &S, LoopInfo &LI) { std::unique_ptr Impl = collapseToUnused(S, LI); Scop::ScopStatistics ScopStats = S.getStatistics(); @@ -1399,7 +1394,7 @@ static PreservedAnalyses runDeLICMUsingNPM(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &U, raw_ostream *OS) { LoopInfo &LI = SAR.LI; - std::unique_ptr Impl = runDeLICMImpl(S, LI); + std::unique_ptr Impl = runDeLICM(S, LI); if (OS) { *OS << "Printing analysis 'Polly - DeLICM/DePRE' for region: '" @@ -1422,8 +1417,88 @@ static PreservedAnalyses runDeLICMUsingNPM(Scop &S, ScopAnalysisManager &SAM, PA.preserveSet>(); return PA; } + +class DeLICMWrapperPass final : public ScopPass { +private: + DeLICMWrapperPass(const DeLICMWrapperPass &) = delete; + const DeLICMWrapperPass &operator=(const DeLICMWrapperPass &) = delete; + + /// The pass implementation, also holding per-scop data. + std::unique_ptr Impl; + +public: + static char ID; + explicit DeLICMWrapperPass() : ScopPass(ID) {} + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addRequiredTransitive(); + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnScop(Scop &S) override { + // Free resources for previous scop's computation, if not yet done. + releaseMemory(); + + auto &LI = getAnalysis().getLoopInfo(); + Impl = runDeLICM(S, LI); + + return Impl->isModified(); + } + + void printScop(raw_ostream &OS, Scop &S) const override { + if (!Impl) + return; + assert(Impl->getScop() == &S); + + OS << "DeLICM result:\n"; + Impl->print(OS); + } + + void releaseMemory() override { Impl.reset(); } +}; + +char DeLICMWrapperPass::ID; + +/// Print result from DeLICMWrapperPass. +class DeLICMPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + DeLICMPrinterLegacyPass() : DeLICMPrinterLegacyPass(outs()) {} + explicit DeLICMPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + DeLICMWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char DeLICMPrinterLegacyPass::ID = 0; } // anonymous namespace +Pass *polly::createDeLICMWrapperPass() { return new DeLICMWrapperPass(); } + +llvm::Pass *polly::createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS) { + return new DeLICMPrinterLegacyPass(OS); +} + llvm::PreservedAnalyses polly::DeLICMPass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, @@ -1452,21 +1527,15 @@ bool polly::isConflicting( return Knowledge::isConflicting(Existing, Proposed, OS, Indent); } -bool polly::runDeLICM(Scop &S) { - LoopInfo &LI = *S.getLI(); - std::unique_ptr Impl = runDeLICMImpl(S, LI); - - if (PollyPrintDeLICM) { - outs() << "Printing analysis 'Polly - DeLICM/DePRE' for region: '" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; - if (Impl) { - assert(Impl->getScop() == &S); - - outs() << "DeLICM result:\n"; - Impl->print(outs()); - } - } - - return Impl->isModified(); -} +INITIALIZE_PASS_BEGIN(DeLICMWrapperPass, "polly-delicm", "Polly - DeLICM/DePRE", + false, false) +INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass) +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass) +INITIALIZE_PASS_END(DeLICMWrapperPass, "polly-delicm", "Polly - DeLICM/DePRE", + false, false) + +INITIALIZE_PASS_BEGIN(DeLICMPrinterLegacyPass, "polly-print-delicm", + "Polly - Print DeLICM/DePRE", false, false) +INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass) +INITIALIZE_PASS_END(DeLICMPrinterLegacyPass, "polly-print-delicm", + "Polly - Print DeLICM/DePRE", false, false) diff --git a/polly/lib/Transform/DeadCodeElimination.cpp b/polly/lib/Transform/DeadCodeElimination.cpp index df95e5190431c..5cb89fec09fe8 100644 --- a/polly/lib/Transform/DeadCodeElimination.cpp +++ b/polly/lib/Transform/DeadCodeElimination.cpp @@ -33,6 +33,7 @@ #include "polly/DeadCodeElimination.h" #include "polly/DependenceInfo.h" +#include "polly/LinkAllPasses.h" #include "polly/Options.h" #include "polly/ScopInfo.h" #include "llvm/Support/CommandLine.h" @@ -50,6 +51,20 @@ cl::opt DCEPreciseSteps( "before the actual dead code elimination."), cl::init(-1), cl::cat(PollyCategory)); +class DeadCodeElimWrapperPass final : public ScopPass { +public: + static char ID; + explicit DeadCodeElimWrapperPass() : ScopPass(ID) {} + + /// Remove dead iterations from the schedule of @p S. + bool runOnScop(Scop &S) override; + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; + +char DeadCodeElimWrapperPass::ID = 0; + /// Return the set of live iterations. /// /// The set of live iterations are all iterations that write to memory and for @@ -129,19 +144,29 @@ static bool runDeadCodeElimination(Scop &S, int PreciseSteps, return S.restrictDomains(Live); } -} // namespace - -bool polly::runDeadCodeElim(Scop &S, DependenceAnalysis::Result &DA) { - const Dependences &Deps = DA.getDependences(Dependences::AL_Statement); +bool DeadCodeElimWrapperPass::runOnScop(Scop &S) { + auto &DI = getAnalysis(); + const Dependences &Deps = DI.getDependences(Dependences::AL_Statement); bool Changed = runDeadCodeElimination(S, DCEPreciseSteps, Deps); // FIXME: We can probably avoid the recomputation of all dependences by // updating them explicitly. if (Changed) - DA.recomputeDependences(Dependences::AL_Statement); + DI.recomputeDependences(Dependences::AL_Statement); - return Changed; + return false; +} + +void DeadCodeElimWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); +} + +} // namespace + +Pass *polly::createDeadCodeElimWrapperPass() { + return new DeadCodeElimWrapperPass(); } llvm::PreservedAnalyses DeadCodeElimPass::run(Scop &S, ScopAnalysisManager &SAM, @@ -166,3 +191,10 @@ llvm::PreservedAnalyses DeadCodeElimPass::run(Scop &S, ScopAnalysisManager &SAM, PA.preserveSet>(); return PA; } + +INITIALIZE_PASS_BEGIN(DeadCodeElimWrapperPass, "polly-dce", + "Polly - Remove dead iterations", false, false) +INITIALIZE_PASS_DEPENDENCY(DependenceInfo) +INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass) +INITIALIZE_PASS_END(DeadCodeElimWrapperPass, "polly-dce", + "Polly - Remove dead iterations", false, false) diff --git a/polly/lib/Transform/FlattenSchedule.cpp b/polly/lib/Transform/FlattenSchedule.cpp index 35a8ce6877036..f514ef359ba07 100644 --- a/polly/lib/Transform/FlattenSchedule.cpp +++ b/polly/lib/Transform/FlattenSchedule.cpp @@ -14,7 +14,6 @@ #include "polly/FlattenSchedule.h" #include "polly/FlattenAlgo.h" -#include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/ScopPass.h" #include "polly/Support/ISLOStream.h" @@ -27,10 +26,6 @@ using namespace llvm; namespace { -static cl::opt PollyPrintFlattenSchedule("polly-print-flatten-schedule", - cl::desc("A polly pass"), - cl::cat(PollyCategory)); - /// Print a schedule to @p OS. /// /// Prints the schedule for each statements on a new line. @@ -39,45 +34,119 @@ void printSchedule(raw_ostream &OS, const isl::union_map &Schedule, for (isl::map Map : Schedule.get_map_list()) OS.indent(indent) << Map << "\n"; } -} // namespace -void polly::runFlattenSchedulePass(Scop &S) { - // Keep a reference to isl_ctx to ensure that it is not freed before we free - // OldSchedule. - auto IslCtx = S.getSharedIslCtx(); +/// Flatten the schedule stored in an polly::Scop. +class FlattenSchedule final : public ScopPass { +private: + FlattenSchedule(const FlattenSchedule &) = delete; + const FlattenSchedule &operator=(const FlattenSchedule &) = delete; + + std::shared_ptr IslCtx; + isl::union_map OldSchedule; + +public: + static char ID; + explicit FlattenSchedule() : ScopPass(ID) {} + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addRequiredTransitive(); + AU.setPreservesAll(); + } + + bool runOnScop(Scop &S) override { + // Keep a reference to isl_ctx to ensure that it is not freed before we free + // OldSchedule. + IslCtx = S.getSharedIslCtx(); - POLLY_DEBUG(dbgs() << "Going to flatten old schedule:\n"); - auto OldSchedule = S.getSchedule(); - POLLY_DEBUG(printSchedule(dbgs(), OldSchedule, 2)); + POLLY_DEBUG(dbgs() << "Going to flatten old schedule:\n"); + OldSchedule = S.getSchedule(); + POLLY_DEBUG(printSchedule(dbgs(), OldSchedule, 2)); - auto Domains = S.getDomains(); - auto RestrictedOldSchedule = OldSchedule.intersect_domain(Domains); - POLLY_DEBUG(dbgs() << "Old schedule with domains:\n"); - POLLY_DEBUG(printSchedule(dbgs(), RestrictedOldSchedule, 2)); + auto Domains = S.getDomains(); + auto RestrictedOldSchedule = OldSchedule.intersect_domain(Domains); + POLLY_DEBUG(dbgs() << "Old schedule with domains:\n"); + POLLY_DEBUG(printSchedule(dbgs(), RestrictedOldSchedule, 2)); - auto NewSchedule = flattenSchedule(RestrictedOldSchedule); + auto NewSchedule = flattenSchedule(RestrictedOldSchedule); - POLLY_DEBUG(dbgs() << "Flattened new schedule:\n"); - POLLY_DEBUG(printSchedule(dbgs(), NewSchedule, 2)); + POLLY_DEBUG(dbgs() << "Flattened new schedule:\n"); + POLLY_DEBUG(printSchedule(dbgs(), NewSchedule, 2)); - NewSchedule = NewSchedule.gist_domain(Domains); - POLLY_DEBUG(dbgs() << "Gisted, flattened new schedule:\n"); - POLLY_DEBUG(printSchedule(dbgs(), NewSchedule, 2)); + NewSchedule = NewSchedule.gist_domain(Domains); + POLLY_DEBUG(dbgs() << "Gisted, flattened new schedule:\n"); + POLLY_DEBUG(printSchedule(dbgs(), NewSchedule, 2)); - S.setSchedule(NewSchedule); + S.setSchedule(NewSchedule); + return false; + } - if (PollyPrintFlattenSchedule) { - outs() - << "Printing analysis 'Polly - Print flattened schedule' for region: '" - << S.getRegion().getNameStr() << "' in function '" - << S.getFunction().getName() << "':\n"; + void printScop(raw_ostream &OS, Scop &S) const override { + OS << "Schedule before flattening {\n"; + printSchedule(OS, OldSchedule, 4); + OS << "}\n\n"; - outs() << "Schedule before flattening {\n"; - printSchedule(outs(), OldSchedule, 4); - outs() << "}\n\n"; + OS << "Schedule after flattening {\n"; + printSchedule(OS, S.getSchedule(), 4); + OS << "}\n"; + } - outs() << "Schedule after flattening {\n"; - printSchedule(outs(), S.getSchedule(), 4); - outs() << "}\n"; + void releaseMemory() override { + OldSchedule = {}; + IslCtx.reset(); } +}; + +char FlattenSchedule::ID; + +/// Print result from FlattenSchedule. +class FlattenSchedulePrinterLegacyPass final : public ScopPass { +public: + static char ID; + + FlattenSchedulePrinterLegacyPass() + : FlattenSchedulePrinterLegacyPass(outs()) {} + explicit FlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + FlattenSchedule &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char FlattenSchedulePrinterLegacyPass::ID = 0; +} // anonymous namespace + +Pass *polly::createFlattenSchedulePass() { return new FlattenSchedule(); } + +Pass *polly::createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS) { + return new FlattenSchedulePrinterLegacyPass(OS); } + +INITIALIZE_PASS_BEGIN(FlattenSchedule, "polly-flatten-schedule", + "Polly - Flatten schedule", false, false) +INITIALIZE_PASS_END(FlattenSchedule, "polly-flatten-schedule", + "Polly - Flatten schedule", false, false) + +INITIALIZE_PASS_BEGIN(FlattenSchedulePrinterLegacyPass, + "polly-print-flatten-schedule", + "Polly - Print flattened schedule", false, false) +INITIALIZE_PASS_DEPENDENCY(FlattenSchedule) +INITIALIZE_PASS_END(FlattenSchedulePrinterLegacyPass, + "polly-print-flatten-schedule", + "Polly - Print flattened schedule", false, false) diff --git a/polly/lib/Transform/ForwardOpTree.cpp b/polly/lib/Transform/ForwardOpTree.cpp index 24d4a4af6e681..e9be6c9cdcc27 100644 --- a/polly/lib/Transform/ForwardOpTree.cpp +++ b/polly/lib/Transform/ForwardOpTree.cpp @@ -28,6 +28,7 @@ #include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Value.h" +#include "llvm/InitializePasses.h" #include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" @@ -61,11 +62,6 @@ static cl::opt "analysis; 0=no limit"), cl::init(1000000), cl::cat(PollyCategory), cl::Hidden); -static cl::opt - PollyPrintOptree("polly-print-optree", - cl::desc("Polly - Print forward operand tree result"), - cl::cat(PollyCategory)); - STATISTIC(KnownAnalyzed, "Number of successfully analyzed SCoPs"); STATISTIC(KnownOutOfQuota, "Analyses aborted because max_operations was reached"); @@ -1034,8 +1030,8 @@ class ForwardOpTreeImpl final : ZoneAlgorithm { bool isModified() const { return Modified; } }; -static std::unique_ptr runForwardOpTreeImpl(Scop &S, - LoopInfo &LI) { +static std::unique_ptr runForwardOpTree(Scop &S, + LoopInfo &LI) { std::unique_ptr Impl; { IslMaxOperationsGuard MaxOpGuard(S.getIslCtx().get(), MaxOps, false); @@ -1077,7 +1073,7 @@ runForwardOpTreeUsingNPM(Scop &S, ScopAnalysisManager &SAM, raw_ostream *OS) { LoopInfo &LI = SAR.LI; - std::unique_ptr Impl = runForwardOpTreeImpl(S, LI); + std::unique_ptr Impl = runForwardOpTree(S, LI); if (OS) { *OS << "Printing analysis 'Polly - Forward operand tree' for region: '" << S.getName() << "' in function '" << S.getFunction().getName() @@ -1098,8 +1094,99 @@ runForwardOpTreeUsingNPM(Scop &S, ScopAnalysisManager &SAM, PA.preserveSet>(); return PA; } + +/// Pass that redirects scalar reads to array elements that are known to contain +/// the same value. +/// +/// This reduces the number of scalar accesses and therefore potentially +/// increases the freedom of the scheduler. In the ideal case, all reads of a +/// scalar definition are redirected (We currently do not care about removing +/// the write in this case). This is also useful for the main DeLICM pass as +/// there are less scalars to be mapped. +class ForwardOpTreeWrapperPass final : public ScopPass { +private: + /// The pass implementation, also holding per-scop data. + std::unique_ptr Impl; + +public: + static char ID; + + explicit ForwardOpTreeWrapperPass() : ScopPass(ID) {} + ForwardOpTreeWrapperPass(const ForwardOpTreeWrapperPass &) = delete; + ForwardOpTreeWrapperPass & + operator=(const ForwardOpTreeWrapperPass &) = delete; + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addRequiredTransitive(); + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnScop(Scop &S) override { + // Free resources for previous SCoP's computation, if not yet done. + releaseMemory(); + + LoopInfo &LI = getAnalysis().getLoopInfo(); + + Impl = runForwardOpTree(S, LI); + + return false; + } + + void printScop(raw_ostream &OS, Scop &S) const override { + if (!Impl) + return; + + assert(Impl->getScop() == &S); + Impl->print(OS); + } + + void releaseMemory() override { Impl.reset(); } +}; // class ForwardOpTree + +char ForwardOpTreeWrapperPass::ID; + +/// Print result from ForwardOpTreeWrapperPass. +class ForwardOpTreePrinterLegacyPass final : public ScopPass { +public: + static char ID; + + ForwardOpTreePrinterLegacyPass() : ForwardOpTreePrinterLegacyPass(outs()) {} + explicit ForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + ForwardOpTreeWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); + } + +private: + llvm::raw_ostream &OS; +}; + +char ForwardOpTreePrinterLegacyPass::ID = 0; } // namespace +Pass *polly::createForwardOpTreeWrapperPass() { + return new ForwardOpTreeWrapperPass(); +} + +Pass *polly::createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS) { + return new ForwardOpTreePrinterLegacyPass(OS); +} + llvm::PreservedAnalyses ForwardOpTreePass::run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, @@ -1113,20 +1200,14 @@ ForwardOpTreePrinterPass::run(Scop &S, ScopAnalysisManager &SAM, return runForwardOpTreeUsingNPM(S, SAM, SAR, U, &OS); } -bool polly::runForwardOpTree(Scop &S) { - LoopInfo &LI = *S.getLI(); - - std::unique_ptr Impl = runForwardOpTreeImpl(S, LI); - if (PollyPrintOptree) { - outs() << "Printing analysis 'Polly - Forward operand tree' for region: '" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; - if (Impl) { - assert(Impl->getScop() == &S); - - Impl->print(outs()); - } - } - - return Impl->isModified(); -} +INITIALIZE_PASS_BEGIN(ForwardOpTreeWrapperPass, "polly-optree", + "Polly - Forward operand tree", false, false) +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass) +INITIALIZE_PASS_END(ForwardOpTreeWrapperPass, "polly-optree", + "Polly - Forward operand tree", false, false) + +INITIALIZE_PASS_BEGIN(ForwardOpTreePrinterLegacyPass, "polly-print-optree", + "Polly - Print forward operand tree result", false, false) +INITIALIZE_PASS_DEPENDENCY(ForwardOpTreeWrapperPass) +INITIALIZE_PASS_END(ForwardOpTreePrinterLegacyPass, "polly-print-optree", + "Polly - Print forward operand tree result", false, false) diff --git a/polly/lib/Transform/MaximalStaticExpansion.cpp b/polly/lib/Transform/MaximalStaticExpansion.cpp index 62a4d251875c5..0719840f74a79 100644 --- a/polly/lib/Transform/MaximalStaticExpansion.cpp +++ b/polly/lib/Transform/MaximalStaticExpansion.cpp @@ -13,13 +13,14 @@ #include "polly/MaximalStaticExpansion.h" #include "polly/DependenceInfo.h" -#include "polly/Options.h" +#include "polly/LinkAllPasses.h" #include "polly/ScopInfo.h" #include "polly/ScopPass.h" #include "polly/Support/ISLTools.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/StringRef.h" #include "llvm/Analysis/OptimizationRemarkEmitter.h" +#include "llvm/InitializePasses.h" #include "isl/isl-noexceptions.h" #include "isl/union_map.h" #include @@ -34,10 +35,28 @@ using namespace polly; namespace { -static cl::opt - PollyPrintMSE("polly-print-mse", - cl::desc("Polly - Print Maximal static expansion of SCoP"), - cl::cat(PollyCategory)); +class MaximalStaticExpanderWrapperPass final : public ScopPass { +public: + static char ID; + + explicit MaximalStaticExpanderWrapperPass() : ScopPass(ID) {} + + ~MaximalStaticExpanderWrapperPass() override = default; + + /// Expand the accesses of the SCoP. + /// + /// @param S The SCoP that must be expanded. + bool runOnScop(Scop &S) override; + + /// Print the SCoP. + /// + /// @param OS The stream where to print. + /// @param S The SCop that must be printed. + void printScop(raw_ostream &OS, Scop &S) const override; + + /// Register all analyses and transformations required. + void getAnalysisUsage(AnalysisUsage &AU) const override; +}; #ifndef NDEBUG /// Whether a dimension of a set is bounded (lower and upper) by a constant, @@ -439,8 +458,8 @@ class MaximalStaticExpansionImpl { }; static std::unique_ptr -runMaximalStaticExpansionImpl(Scop &S, OptimizationRemarkEmitter &ORE, - const Dependences &D) { +runMaximalStaticExpansion(Scop &S, OptimizationRemarkEmitter &ORE, + const Dependences &D) { auto Dependences = D.getDependences(Dependences::TYPE_RAW); std::unique_ptr Impl = @@ -459,7 +478,7 @@ static PreservedAnalyses runMSEUsingNPM(Scop &S, ScopAnalysisManager &SAM, auto &D = DI.getDependences(Dependences::AL_Reference); std::unique_ptr Impl = - runMaximalStaticExpansionImpl(S, ORE, D); + runMaximalStaticExpansion(S, ORE, D); if (OS) { *OS << "Printing analysis 'Polly - Maximal static expansion of SCoP' for " @@ -492,24 +511,42 @@ MaximalStaticExpansionPrinterPass::run(Scop &S, ScopAnalysisManager &SAM, return runMSEUsingNPM(S, SAM, SAR, &OS); } -void polly::runMaximalStaticExpansion(Scop &S, DependenceAnalysis::Result &DI) { - OptimizationRemarkEmitter ORE(&S.getFunction()); +char MaximalStaticExpanderWrapperPass::ID = 0; + +bool MaximalStaticExpanderWrapperPass::runOnScop(Scop &S) { + // Get the ORE from OptimizationRemarkEmitterWrapperPass. + OptimizationRemarkEmitter *ORE = + &getAnalysis().getORE(); + // Get the RAW Dependences. + auto &DI = getAnalysis(); auto &D = DI.getDependences(Dependences::AL_Reference); std::unique_ptr Impl = - runMaximalStaticExpansionImpl(S, ORE, D); + runMaximalStaticExpansion(S, *ORE, D); - if (PollyPrintMSE) { - outs() - << "Printing analysis 'Polly - Maximal static expansion of SCoP' for " - "region: '" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; + return false; +} - if (Impl) { - outs() << "MSE result:\n"; - Impl->print(llvm::outs()); - } - } +void MaximalStaticExpanderWrapperPass::printScop(raw_ostream &OS, + Scop &S) const { + S.print(OS, false); } + +void MaximalStaticExpanderWrapperPass::getAnalysisUsage( + AnalysisUsage &AU) const { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.addRequired(); +} + +Pass *polly::createMaximalStaticExpansionPass() { + return new MaximalStaticExpanderWrapperPass(); +} + +INITIALIZE_PASS_BEGIN(MaximalStaticExpanderWrapperPass, "polly-mse", + "Polly - Maximal static expansion of SCoP", false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo); +INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass); +INITIALIZE_PASS_END(MaximalStaticExpanderWrapperPass, "polly-mse", + "Polly - Maximal static expansion of SCoP", false, false) diff --git a/polly/lib/Transform/ScheduleOptimizer.cpp b/polly/lib/Transform/ScheduleOptimizer.cpp index 6acdd6862c4cc..0888ebd7a9362 100644 --- a/polly/lib/Transform/ScheduleOptimizer.cpp +++ b/polly/lib/Transform/ScheduleOptimizer.cpp @@ -57,6 +57,7 @@ #include "llvm/ADT/Sequence.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/OptimizationRemarkEmitter.h" +#include "llvm/InitializePasses.h" #include "llvm/Support/CommandLine.h" #include "isl/options.h" @@ -197,10 +198,6 @@ static cl::opt OptimizedScops( "transformations is applied on the schedule tree"), cl::cat(PollyCategory)); -static cl::opt PollyPrintOptIsl("polly-print-opt-isl", - cl::desc("A polly pass"), - cl::cat(PollyCategory)); - STATISTIC(ScopsProcessed, "Number of scops processed"); STATISTIC(ScopsRescheduled, "Number of scops rescheduled"); STATISTIC(ScopsOptimized, "Number of scops optimized"); @@ -641,6 +638,34 @@ bool ScheduleTreeOptimizer::isProfitableSchedule(Scop &S, return changed; } +class IslScheduleOptimizerWrapperPass final : public ScopPass { +public: + static char ID; + + explicit IslScheduleOptimizerWrapperPass() : ScopPass(ID) {} + + /// Optimize the schedule of the SCoP @p S. + bool runOnScop(Scop &S) override; + + /// Print the new schedule for the SCoP @p S. + void printScop(raw_ostream &OS, Scop &S) const override; + + /// Register all analyses and transformation required. + void getAnalysisUsage(AnalysisUsage &AU) const override; + + /// Release the internal memory. + void releaseMemory() override { + LastSchedule = {}; + IslCtx.reset(); + } + +private: + std::shared_ptr IslCtx; + isl::schedule LastSchedule; +}; + +char IslScheduleOptimizerWrapperPass::ID = 0; + #ifndef NDEBUG static void printSchedule(llvm::raw_ostream &OS, const isl::schedule &Schedule, StringRef Desc) { @@ -708,7 +733,7 @@ static void walkScheduleTreeForStatistics(isl::schedule Schedule, int Version) { &Version); } -static void runIslScheduleOptimizerImpl( +static void runIslScheduleOptimizer( Scop &S, function_ref GetDeps, TargetTransformInfo *TTI, OptimizationRemarkEmitter *ORE, @@ -925,6 +950,30 @@ static void runIslScheduleOptimizerImpl( errs() << S; } +bool IslScheduleOptimizerWrapperPass::runOnScop(Scop &S) { + releaseMemory(); + + Function &F = S.getFunction(); + IslCtx = S.getSharedIslCtx(); + + auto getDependences = + [this](Dependences::AnalysisLevel) -> const Dependences & { + return getAnalysis().getDependences( + Dependences::AL_Statement); + }; + OptimizationRemarkEmitter &ORE = + getAnalysis().getORE(); + TargetTransformInfo *TTI = + &getAnalysis().getTTI(F); + + bool DepsChanged = false; + runIslScheduleOptimizer(S, getDependences, TTI, &ORE, LastSchedule, + DepsChanged); + if (DepsChanged) + getAnalysis().abandonDependences(); + return false; +} + static void runScheduleOptimizerPrinter(raw_ostream &OS, isl::schedule LastSchedule) { isl_printer *p; @@ -948,8 +997,36 @@ static void runScheduleOptimizerPrinter(raw_ostream &OS, free(ScheduleStr); } +void IslScheduleOptimizerWrapperPass::printScop(raw_ostream &OS, Scop &) const { + runScheduleOptimizerPrinter(OS, LastSchedule); +} + +void IslScheduleOptimizerWrapperPass::getAnalysisUsage( + AnalysisUsage &AU) const { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.addRequired(); + AU.addRequired(); + + AU.addPreserved(); + AU.addPreserved(); +} + } // namespace +Pass *polly::createIslScheduleOptimizerWrapperPass() { + return new IslScheduleOptimizerWrapperPass(); +} + +INITIALIZE_PASS_BEGIN(IslScheduleOptimizerWrapperPass, "polly-opt-isl", + "Polly - Optimize schedule of SCoP", false, false); +INITIALIZE_PASS_DEPENDENCY(DependenceInfo); +INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass); +INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass); +INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass); +INITIALIZE_PASS_END(IslScheduleOptimizerWrapperPass, "polly-opt-isl", + "Polly - Optimize schedule of SCoP", false, false) + static llvm::PreservedAnalyses runIslScheduleOptimizerUsingNPM(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &U, @@ -962,7 +1039,7 @@ runIslScheduleOptimizerUsingNPM(Scop &S, ScopAnalysisManager &SAM, TargetTransformInfo *TTI = &SAR.TTI; isl::schedule LastSchedule; bool DepsChanged = false; - runIslScheduleOptimizerImpl(S, GetDeps, TTI, &ORE, LastSchedule, DepsChanged); + runIslScheduleOptimizer(S, GetDeps, TTI, &ORE, LastSchedule, DepsChanged); if (DepsChanged) Deps.abandonDependences(); @@ -988,23 +1065,52 @@ IslScheduleOptimizerPrinterPass::run(Scop &S, ScopAnalysisManager &SAM, return runIslScheduleOptimizerUsingNPM(S, SAM, SAR, U, &OS); } -void polly::runIslScheduleOptimizer(Scop &S, TargetTransformInfo *TTI, - DependenceAnalysis::Result &Deps) { - auto GetDeps = [&Deps](Dependences::AnalysisLevel) -> const Dependences & { - return Deps.getDependences(Dependences::AL_Statement); - }; - OptimizationRemarkEmitter ORE(&S.getFunction()); - isl::schedule LastSchedule; - bool DepsChanged = false; - runIslScheduleOptimizerImpl(S, GetDeps, TTI, &ORE, LastSchedule, DepsChanged); - if (DepsChanged) - Deps.abandonDependences(); +//===----------------------------------------------------------------------===// - if (PollyPrintOptIsl) { - outs() - << "Printing analysis 'Polly - Optimize schedule of SCoP' for region: '" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; - runScheduleOptimizerPrinter(outs(), LastSchedule); +namespace { +/// Print result from IslScheduleOptimizerWrapperPass. +class IslScheduleOptimizerPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + IslScheduleOptimizerPrinterLegacyPass() + : IslScheduleOptimizerPrinterLegacyPass(outs()) {} + explicit IslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + IslScheduleOptimizerWrapperPass &P = + getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); } + +private: + llvm::raw_ostream &OS; +}; + +char IslScheduleOptimizerPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createIslScheduleOptimizerPrinterLegacyPass(raw_ostream &OS) { + return new IslScheduleOptimizerPrinterLegacyPass(OS); } + +INITIALIZE_PASS_BEGIN(IslScheduleOptimizerPrinterLegacyPass, + "polly-print-opt-isl", + "Polly - Print optimizer schedule of SCoP", false, false); +INITIALIZE_PASS_DEPENDENCY(IslScheduleOptimizerWrapperPass) +INITIALIZE_PASS_END(IslScheduleOptimizerPrinterLegacyPass, + "polly-print-opt-isl", + "Polly - Print optimizer schedule of SCoP", false, false) diff --git a/polly/lib/Transform/ScopInliner.cpp b/polly/lib/Transform/ScopInliner.cpp index 8e7a0dedaf533..c04ba3498339e 100644 --- a/polly/lib/Transform/ScopInliner.cpp +++ b/polly/lib/Transform/ScopInliner.cpp @@ -95,7 +95,53 @@ template bool runScopInlinerImpl(Function *F, SCC_t &SCC) { return Changed; } + +class ScopInlinerWrapperPass final : public CallGraphSCCPass { + using llvm::Pass::doInitialization; + +public: + static char ID; + + ScopInlinerWrapperPass() : CallGraphSCCPass(ID) {} + + bool doInitialization(CallGraph &CG) override { + if (!polly::PollyAllowFullFunction) { + report_fatal_error( + "Aborting from ScopInliner because it only makes sense to run with " + "-polly-allow-full-function. " + "The heurtistic for ScopInliner checks that the full function is a " + "Scop, which happens if and only if polly-allow-full-function is " + " enabled. " + " If not, the entry block is not included in the Scop"); + } + return true; + } + + bool runOnSCC(CallGraphSCC &SCC) override { + Function *F = (*SCC.begin())->getFunction(); + return runScopInlinerImpl(F, SCC); + }; + + void getAnalysisUsage(AnalysisUsage &AU) const override { + CallGraphSCCPass::getAnalysisUsage(AU); + } +}; } // namespace +char ScopInlinerWrapperPass::ID; + +Pass *polly::createScopInlinerWrapperPass() { + ScopInlinerWrapperPass *pass = new ScopInlinerWrapperPass(); + return pass; +} + +INITIALIZE_PASS_BEGIN( + ScopInlinerWrapperPass, "polly-scop-inliner", + "inline functions based on how much of the function is a scop.", false, + false) +INITIALIZE_PASS_END( + ScopInlinerWrapperPass, "polly-scop-inliner", + "inline functions based on how much of the function is a scop.", false, + false) polly::ScopInlinerPass::ScopInlinerPass() { if (!polly::PollyAllowFullFunction) { diff --git a/polly/lib/Transform/Simplify.cpp b/polly/lib/Transform/Simplify.cpp index cf0f8c5ca5ef2..75e91cd1c031a 100644 --- a/polly/lib/Transform/Simplify.cpp +++ b/polly/lib/Transform/Simplify.cpp @@ -11,7 +11,6 @@ //===----------------------------------------------------------------------===// #include "polly/Simplify.h" -#include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/ScopPass.h" #include "polly/Support/GICHelper.h" @@ -19,6 +18,7 @@ #include "polly/Support/ISLTools.h" #include "polly/Support/VirtualInstruction.h" #include "llvm/ADT/Statistic.h" +#include "llvm/InitializePasses.h" #include "llvm/Support/Debug.h" #include @@ -30,11 +30,6 @@ using namespace polly; namespace { -static cl::opt - PollyPrintSimplify("polly-print-simplify", - cl::desc("Polly - Print Simplify actions"), - cl::cat(PollyCategory)); - #define TWO_STATISTICS(VARNAME, DESC) \ static llvm::Statistic VARNAME[2] = { \ {DEBUG_TYPE, #VARNAME "0", DESC " (first)"}, \ @@ -761,6 +756,39 @@ void SimplifyImpl::printScop(raw_ostream &OS, Scop &S) const { printAccesses(OS); } +class SimplifyWrapperPass final : public ScopPass { +public: + static char ID; + int CallNo; + std::optional Impl; + + explicit SimplifyWrapperPass(int CallNo = 0) : ScopPass(ID), CallNo(CallNo) {} + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addRequiredTransitive(); + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnScop(Scop &S) override { + LoopInfo *LI = &getAnalysis().getLoopInfo(); + + Impl.emplace(CallNo); + Impl->run(S, LI); + + return false; + } + + void printScop(raw_ostream &OS, Scop &S) const override { + if (Impl) + Impl->printScop(OS, S); + } + + void releaseMemory() override { Impl.reset(); } +}; + +char SimplifyWrapperPass::ID; + static llvm::PreservedAnalyses runSimplifyUsingNPM(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR, SPMUpdater &U, int CallNo, @@ -815,15 +843,58 @@ SmallVector polly::getAccessesInOrder(ScopStmt &Stmt) { return Accesses; } -bool polly::runSimplify(Scop &S, int CallNo) { - SimplifyImpl Impl(CallNo); - Impl.run(S, S.getLI()); - if (PollyPrintSimplify) { - outs() << "Printing analysis 'Polly - Simplify' for region: '" - << S.getName() << "' in function '" << S.getFunction().getName() - << "':\n"; - Impl.printScop(outs(), S); +Pass *polly::createSimplifyWrapperPass(int CallNo) { + return new SimplifyWrapperPass(CallNo); +} + +INITIALIZE_PASS_BEGIN(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify", + false, false) +INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass) +INITIALIZE_PASS_END(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify", + false, false) + +//===----------------------------------------------------------------------===// + +namespace { +/// Print result from SimplifyWrapperPass. +class SimplifyPrinterLegacyPass final : public ScopPass { +public: + static char ID; + + SimplifyPrinterLegacyPass() : SimplifyPrinterLegacyPass(outs()) {} + explicit SimplifyPrinterLegacyPass(llvm::raw_ostream &OS) + : ScopPass(ID), OS(OS) {} + + bool runOnScop(Scop &S) override { + SimplifyWrapperPass &P = getAnalysis(); + + OS << "Printing analysis '" << P.getPassName() << "' for region: '" + << S.getRegion().getNameStr() << "' in function '" + << S.getFunction().getName() << "':\n"; + P.printScop(OS, S); + + return false; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + ScopPass::getAnalysisUsage(AU); + AU.addRequired(); + AU.setPreservesAll(); } - return Impl.isModified(); +private: + llvm::raw_ostream &OS; +}; + +char SimplifyPrinterLegacyPass::ID = 0; +} // namespace + +Pass *polly::createSimplifyPrinterLegacyPass(raw_ostream &OS) { + return new SimplifyPrinterLegacyPass(OS); } + +INITIALIZE_PASS_BEGIN(SimplifyPrinterLegacyPass, "polly-print-simplify", + "Polly - Print Simplify actions", false, false) +INITIALIZE_PASS_DEPENDENCY(SimplifyWrapperPass) +INITIALIZE_PASS_END(SimplifyPrinterLegacyPass, "polly-print-simplify", + "Polly - Print Simplify actions", false, false) diff --git a/polly/test/CodeGen/20100617.ll b/polly/test/CodeGen/20100617.ll index 7de1b843a5b0a..7229a6e3d5240 100644 --- a/polly/test/CodeGen/20100617.ll +++ b/polly/test/CodeGen/20100617.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @init_array() nounwind { diff --git a/polly/test/CodeGen/20100622.ll b/polly/test/CodeGen/20100622.ll index 13a6159d3e7a7..bed737741abba 100644 --- a/polly/test/CodeGen/20100622.ll +++ b/polly/test/CodeGen/20100622.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s | not FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | not FileCheck %s target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32" diff --git a/polly/test/CodeGen/20100707.ll b/polly/test/CodeGen/20100707.ll index 6a4763dcb3b76..ee0422e07c4ea 100644 --- a/polly/test/CodeGen/20100707.ll +++ b/polly/test/CodeGen/20100707.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @clause_SetSplitField(i32 %Length) nounwind inlinehint { diff --git a/polly/test/CodeGen/20100707_2.ll b/polly/test/CodeGen/20100707_2.ll index 648a06479ae27..a4cd76af9dd3c 100644 --- a/polly/test/CodeGen/20100707_2.ll +++ b/polly/test/CodeGen/20100707_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @win193 = external global [4 x [36 x double]], align 32 ; [#uses=3] diff --git a/polly/test/CodeGen/20100708.ll b/polly/test/CodeGen/20100708.ll index 52153d7cfa730..9080451aeae50 100644 --- a/polly/test/CodeGen/20100708.ll +++ b/polly/test/CodeGen/20100708.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect < %s +; RUN: opt %loadNPMPolly '-passes=print' < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define fastcc void @execute() nounwind { diff --git a/polly/test/CodeGen/20100708_2.ll b/polly/test/CodeGen/20100708_2.ll index 075a4947c8e72..51dc9d311f070 100644 --- a/polly/test/CodeGen/20100708_2.ll +++ b/polly/test/CodeGen/20100708_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @init_array() nounwind { diff --git a/polly/test/CodeGen/20100713.ll b/polly/test/CodeGen/20100713.ll index 0b0ed7327c8b1..a836795c9907f 100644 --- a/polly/test/CodeGen/20100713.ll +++ b/polly/test/CodeGen/20100713.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @fft_float(i32 %NumSamples) nounwind { diff --git a/polly/test/CodeGen/20100713_2.ll b/polly/test/CodeGen/20100713_2.ll index 5681f34152342..28b984bd5900f 100644 --- a/polly/test/CodeGen/20100713_2.ll +++ b/polly/test/CodeGen/20100713_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define hidden void @luaD_callhook() nounwind { diff --git a/polly/test/CodeGen/20100717.ll b/polly/test/CodeGen/20100717.ll index 97ed151410dfb..51c453cfe438e 100644 --- a/polly/test/CodeGen/20100717.ll +++ b/polly/test/CodeGen/20100717.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @matrixTranspose(ptr %A) nounwind { diff --git a/polly/test/CodeGen/20100718-DomInfo-2.ll b/polly/test/CodeGen/20100718-DomInfo-2.ll index cbee80e44949c..fdac75f1b999f 100644 --- a/polly/test/CodeGen/20100718-DomInfo-2.ll +++ b/polly/test/CodeGen/20100718-DomInfo-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -verify-dom-info -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-dom-info -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @getNonAffNeighbour() nounwind { diff --git a/polly/test/CodeGen/20100718-DomInfo.ll b/polly/test/CodeGen/20100718-DomInfo.ll index e6fcaf6a9272f..da68eb0dd8fa7 100644 --- a/polly/test/CodeGen/20100718-DomInfo.ll +++ b/polly/test/CodeGen/20100718-DomInfo.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -verify-dom-info -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-dom-info -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @intrapred_luma_16x16(i32 %predmode) nounwind { diff --git a/polly/test/CodeGen/20100720-MultipleConditions.ll b/polly/test/CodeGen/20100720-MultipleConditions.ll index 66c9e2bb0eb5b..3dece4efdcd06 100644 --- a/polly/test/CodeGen/20100720-MultipleConditions.ll +++ b/polly/test/CodeGen/20100720-MultipleConditions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ;int bar1(); ;int bar2(); diff --git a/polly/test/CodeGen/20100809-IndependentBlock.ll b/polly/test/CodeGen/20100809-IndependentBlock.ll index cc3a5087090b4..f45b6544464de 100644 --- a/polly/test/CodeGen/20100809-IndependentBlock.ll +++ b/polly/test/CodeGen/20100809-IndependentBlock.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @cfft2(ptr %x) nounwind { entry: diff --git a/polly/test/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll b/polly/test/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll index 240c2a49bc46d..82da9d2486423 100644 --- a/polly/test/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll +++ b/polly/test/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/CodeGen/20101030-Overflow.ll b/polly/test/CodeGen/20101030-Overflow.ll index c199f757ebac5..fecdb9d4fed1e 100644 --- a/polly/test/CodeGen/20101030-Overflow.ll +++ b/polly/test/CodeGen/20101030-Overflow.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @compdecomp() nounwind { diff --git a/polly/test/CodeGen/20101103-Overflow3.ll b/polly/test/CodeGen/20101103-Overflow3.ll index e8b425f009723..f1503e25fcc4c 100644 --- a/polly/test/CodeGen/20101103-Overflow3.ll +++ b/polly/test/CodeGen/20101103-Overflow3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @Reflection_coefficients(ptr %r) nounwind { bb20: diff --git a/polly/test/CodeGen/20101103-signmissmatch.ll b/polly/test/CodeGen/20101103-signmissmatch.ll index 0295ee0567208..3d0c929446f45 100644 --- a/polly/test/CodeGen/20101103-signmissmatch.ll +++ b/polly/test/CodeGen/20101103-signmissmatch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @CleanNet() nounwind { diff --git a/polly/test/CodeGen/20110226-Ignore-Dead-Code.ll b/polly/test/CodeGen/20110226-Ignore-Dead-Code.ll index 6913deed23054..0e62e678f0ae2 100644 --- a/polly/test/CodeGen/20110226-Ignore-Dead-Code.ll +++ b/polly/test/CodeGen/20110226-Ignore-Dead-Code.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @main() nounwind { diff --git a/polly/test/CodeGen/20110226-PHI-Node-removed.ll b/polly/test/CodeGen/20110226-PHI-Node-removed.ll index a39fced9dbaba..32b018f24e547 100644 --- a/polly/test/CodeGen/20110226-PHI-Node-removed.ll +++ b/polly/test/CodeGen/20110226-PHI-Node-removed.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/CodeGen/20120316-InvalidCast.ll b/polly/test/CodeGen/20120316-InvalidCast.ll index a7f709b4a7615..b87a3dc60deaa 100644 --- a/polly/test/CodeGen/20120316-InvalidCast.ll +++ b/polly/test/CodeGen/20120316-InvalidCast.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; CHECK: polly.start diff --git a/polly/test/CodeGen/20120403-RHS-type-mismatch.ll b/polly/test/CodeGen/20120403-RHS-type-mismatch.ll index 554384c0e777e..dac78bf04a250 100644 --- a/polly/test/CodeGen/20120403-RHS-type-mismatch.ll +++ b/polly/test/CodeGen/20120403-RHS-type-mismatch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ; We just check that this compilation does not crash. diff --git a/polly/test/CodeGen/20130221.ll b/polly/test/CodeGen/20130221.ll index 101930e175634..5728a768a3b3b 100644 --- a/polly/test/CodeGen/20130221.ll +++ b/polly/test/CodeGen/20130221.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" define void @list_sequence(ptr %A) { diff --git a/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll b/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll index 7ad8cbf963f45..cafd68e508255 100644 --- a/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll +++ b/polly/test/CodeGen/20150328-SCEVExpanderIntroducesNewIV.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/Intrinsics/llvm-expect.ll b/polly/test/CodeGen/Intrinsics/llvm-expect.ll index ba4ea1565e481..47fd4f07e4678 100644 --- a/polly/test/CodeGen/Intrinsics/llvm-expect.ll +++ b/polly/test/CodeGen/Intrinsics/llvm-expect.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; Check that we generate code without crashing. ; diff --git a/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll b/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll index a92917f30b724..eb7de01ba862c 100644 --- a/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll +++ b/polly/test/CodeGen/LoopParallelMD/do_not_mutate_debug_info.ll @@ -1,6 +1,6 @@ ; This test checks that we do not accidentally mutate the debug info when ; inserting loop parallel metadata. -; RUN: opt %loadNPMPolly -S -polly '-passes=polly' -polly-ast-detect-parallel < %s | FileCheck %s +; RUN: opt %loadNPMPolly < %s -S -polly -passes=polly-codegen -polly-ast-detect-parallel | FileCheck %s ; CHECK-NOT: !7 = !{!7} target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll b/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll index 0d947004aea50..9bb086fa79aed 100644 --- a/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll +++ b/polly/test/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-ast-detect-parallel -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-ast-detect-parallel -S < %s | FileCheck %s ; ; Check that we mark multiple parallel loops correctly including the memory instructions. ; diff --git a/polly/test/CodeGen/LoopParallelMD/single_loop_param_parallel.ll b/polly/test/CodeGen/LoopParallelMD/single_loop_param_parallel.ll index 1293cd91da78d..442600cff7a0a 100644 --- a/polly/test/CodeGen/LoopParallelMD/single_loop_param_parallel.ll +++ b/polly/test/CodeGen/LoopParallelMD/single_loop_param_parallel.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=SEQUENTIAL -; RUN: opt %loadNPMPolly '-passes=polly' -polly-ast-detect-parallel -S < %s | FileCheck %s -check-prefix=PARALLEL +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=SEQUENTIAL +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-ast-detect-parallel -S < %s | FileCheck %s -check-prefix=PARALLEL target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; This is a trivially parallel loop. We just use it to ensure that we actually diff --git a/polly/test/CodeGen/MemAccess/bad_alignment.ll b/polly/test/CodeGen/MemAccess/bad_alignment.ll index be1c64938422c..82fff27dd0eb7 100644 --- a/polly/test/CodeGen/MemAccess/bad_alignment.ll +++ b/polly/test/CodeGen/MemAccess/bad_alignment.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -disable-output 2>&1 < %s | FileCheck %s +; RUN: not --crash opt %loadNPMPolly -passes=polly-import-jscop -disable-output 2>&1 < %s | FileCheck %s ; ; Check that we do not allow to access elements not accessed before because the ; alignment information would become invalid. diff --git a/polly/test/CodeGen/MemAccess/codegen_address_space.ll b/polly/test/CodeGen/MemAccess/codegen_address_space.ll index 283c8fbd2c249..3360e10529f8e 100644 --- a/polly/test/CodeGen/MemAccess/codegen_address_space.ll +++ b/polly/test/CodeGen/MemAccess/codegen_address_space.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed < %s -S | FileCheck %s ;int A[100]; ; diff --git a/polly/test/CodeGen/MemAccess/codegen_constant_offset.ll b/polly/test/CodeGen/MemAccess/codegen_constant_offset.ll index ce44f2daceaa9..0563ca87eef51 100644 --- a/polly/test/CodeGen/MemAccess/codegen_constant_offset.ll +++ b/polly/test/CodeGen/MemAccess/codegen_constant_offset.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed < %s -S | FileCheck %s ;int A[100]; ; diff --git a/polly/test/CodeGen/MemAccess/codegen_simple.ll b/polly/test/CodeGen/MemAccess/codegen_simple.ll index ab1dca516a9cf..ee0187fe97d25 100644 --- a/polly/test/CodeGen/MemAccess/codegen_simple.ll +++ b/polly/test/CodeGen/MemAccess/codegen_simple.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed < %s -S | FileCheck %s ;int A[100]; ; diff --git a/polly/test/CodeGen/MemAccess/codegen_simple_float.ll b/polly/test/CodeGen/MemAccess/codegen_simple_float.ll index 72f9c2ce61e3c..6970565bf023e 100644 --- a/polly/test/CodeGen/MemAccess/codegen_simple_float.ll +++ b/polly/test/CodeGen/MemAccess/codegen_simple_float.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed < %s -S | FileCheck %s ; ;float A[100]; ; diff --git a/polly/test/CodeGen/MemAccess/codegen_simple_md.ll b/polly/test/CodeGen/MemAccess/codegen_simple_md.ll index a6d9969286fc7..f0896e2bf6093 100644 --- a/polly/test/CodeGen/MemAccess/codegen_simple_md.ll +++ b/polly/test/CodeGen/MemAccess/codegen_simple_md.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed+withconst -S < %s | FileCheck -check-prefix=WITHCONST %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed+withoutconst -S < %s | FileCheck -check-prefix=WITHOUTCONST %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed+withconst < %s -S | FileCheck -check-prefix=WITHCONST %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed+withoutconst < %s -S | FileCheck -check-prefix=WITHOUTCONST %s ;int A[1040]; ; diff --git a/polly/test/CodeGen/MemAccess/codegen_simple_md_float.ll b/polly/test/CodeGen/MemAccess/codegen_simple_md_float.ll index 568b0ff4ae20a..99fc36996f083 100644 --- a/polly/test/CodeGen/MemAccess/codegen_simple_md_float.ll +++ b/polly/test/CodeGen/MemAccess/codegen_simple_md_float.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed+withconst -S < %s | FileCheck -check-prefix=WITHCONST %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed+withoutconst -S < %s | FileCheck -check-prefix=WITHOUTCONST %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed+withconst < %s -S | FileCheck -check-prefix=WITHCONST %s +;RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed+withoutconst < %s -S | FileCheck -check-prefix=WITHOUTCONST %s ; ;float A[1040]; ; diff --git a/polly/test/CodeGen/MemAccess/create_arrays.ll b/polly/test/CodeGen/MemAccess/create_arrays.ll index 8443e0f7be327..40ae8d6efa95f 100644 --- a/polly/test/CodeGen/MemAccess/create_arrays.ll +++ b/polly/test/CodeGen/MemAccess/create_arrays.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-print-scops '-passes=polly-custom' -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; for (i = 0; i < _PB_NI; i++) ; for (j = 0; j < _PB_NJ; j++) diff --git a/polly/test/CodeGen/MemAccess/create_arrays_heap.ll b/polly/test/CodeGen/MemAccess/create_arrays_heap.ll index 9c95378a76433..1202d21998c94 100644 --- a/polly/test/CodeGen/MemAccess/create_arrays_heap.ll +++ b/polly/test/CodeGen/MemAccess/create_arrays_heap.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-scops '-passes=polly-custom' -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; #define Ni 1056 ; #define Nj 1056 diff --git a/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll b/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll index f08fabd67ef5c..7d8083cc55846 100644 --- a/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll +++ b/polly/test/CodeGen/MemAccess/default_aligned_new_access_function.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-import-jscop -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-import-jscop -disable-output < %s | FileCheck %s ; ; Check that we allow the new access functions even though they access ; different locations than the original ones (but the alignment is the diff --git a/polly/test/CodeGen/MemAccess/different_types.ll b/polly/test/CodeGen/MemAccess/different_types.ll index ae6168d235a96..407e72702aa86 100644 --- a/polly/test/CodeGen/MemAccess/different_types.ll +++ b/polly/test/CodeGen/MemAccess/different_types.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: \ +; RUN: -S < %s | FileCheck %s ; ; void foo(float A[], float B[]) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/CodeGen/MemAccess/generate-all.ll b/polly/test/CodeGen/MemAccess/generate-all.ll index 099a3e0670960..7b2286bfc95a9 100644 --- a/polly/test/CodeGen/MemAccess/generate-all.ll +++ b/polly/test/CodeGen/MemAccess/generate-all.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-codegen-generate-expressions=false -S < %s | FileCheck %s -check-prefix=SCEV -; RUN: opt %loadNPMPolly '-passes=polly' -polly-codegen-generate-expressions=true -S < %s | FileCheck %s -check-prefix=ASTEXPR +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-generate-expressions=false \ +; RUN: -S < %s | FileCheck %s -check-prefix=SCEV +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-generate-expressions=true \ +; RUN: -S < %s | FileCheck %s -check-prefix=ASTEXPR ; ; void foo(float A[]) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/CodeGen/MemAccess/invariant_base_ptr.ll b/polly/test/CodeGen/MemAccess/invariant_base_ptr.ll index d8d0df7009685..5c926ac638413 100644 --- a/polly/test/CodeGen/MemAccess/invariant_base_ptr.ll +++ b/polly/test/CodeGen/MemAccess/invariant_base_ptr.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-invariant-load-hoisting -S 2>&1 < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-invariant-load-hoisting -S \ +; RUN: 2>&1 < %s | FileCheck %s ; Setting new access functions where the base pointer of the array that is newly ; accessed is only loaded within the scop itself caused incorrect code to be diff --git a/polly/test/CodeGen/MemAccess/map_scalar_access.ll b/polly/test/CodeGen/MemAccess/map_scalar_access.ll index 4ea21b26ce531..7c845d4a004f4 100644 --- a/polly/test/CodeGen/MemAccess/map_scalar_access.ll +++ b/polly/test/CodeGen/MemAccess/map_scalar_access.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed '-passes=polly-custom' -polly-print-import-jscop -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed '-passes=polly-custom' -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-print-import-jscop -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-import-jscop -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN define void @map_scalar_access(ptr noalias nonnull %A) { entry: diff --git a/polly/test/CodeGen/MemAccess/multiple_types.ll b/polly/test/CodeGen/MemAccess/multiple_types.ll index edc3888be364b..7848977ce0310 100644 --- a/polly/test/CodeGen/MemAccess/multiple_types.ll +++ b/polly/test/CodeGen/MemAccess/multiple_types.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-allow-differing-element-types -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-allow-differing-element-types \ +; RUN: -S < %s | FileCheck %s ; ; // Check that accessing one array with different types works. ; void multiple_types(char *Short, char *Float, char *Double) { diff --git a/polly/test/CodeGen/MemAccess/simple.ll b/polly/test/CodeGen/MemAccess/simple.ll index 63d66f1c925f7..5077e1a1b5a2c 100644 --- a/polly/test/CodeGen/MemAccess/simple.ll +++ b/polly/test/CodeGen/MemAccess/simple.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -stats < %s 2>&1 | FileCheck %s +;RUN: opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -stats < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ;int A[100]; diff --git a/polly/test/CodeGen/MemAccess/simple_analyze.ll b/polly/test/CodeGen/MemAccess/simple_analyze.ll index f07cb1629ca18..143651b565aff 100644 --- a/polly/test/CodeGen/MemAccess/simple_analyze.ll +++ b/polly/test/CodeGen/MemAccess/simple_analyze.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s +;RUN: opt %loadPolly -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" @A = common global [100 x i32] zeroinitializer, align 4 diff --git a/polly/test/CodeGen/MemAccess/update_access_functions.ll b/polly/test/CodeGen/MemAccess/update_access_functions.ll index 93f5f186ad6a5..51fa97adb3c37 100644 --- a/polly/test/CodeGen/MemAccess/update_access_functions.ll +++ b/polly/test/CodeGen/MemAccess/update_access_functions.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-import-jscop-postfix=transformed \ +; RUN: < %s -S | FileCheck %s ; CHECK-LABEL: polly.stmt.loop1: ; CHECK-NEXT: %3 = mul nsw i64 5, %polly.indvar{{[0-9]*}} diff --git a/polly/test/CodeGen/Metadata/basic_vec_annotate.ll b/polly/test/CodeGen/Metadata/basic_vec_annotate.ll index 344a6d0990837..ebe91636ea3cc 100644 --- a/polly/test/CodeGen/Metadata/basic_vec_annotate.ll +++ b/polly/test/CodeGen/Metadata/basic_vec_annotate.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-annotate-metadata-vectorize < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-annotate-metadata-vectorize < %s | FileCheck %s ; Basic verification of vectorize metadata getting added when "-polly-vectorize-metadata" is ; passed. diff --git a/polly/test/CodeGen/OpenMP/alias-metadata.ll b/polly/test/CodeGen/OpenMP/alias-metadata.ll index 541fbdda5a6b9..121f630789892 100644 --- a/polly/test/CodeGen/OpenMP/alias-metadata.ll +++ b/polly/test/CodeGen/OpenMP/alias-metadata.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -S < %s | FileCheck %s ; ; void foo(float *A, float *B) { ; for (long i = 0; i < 1000; i++) diff --git a/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll b/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll index 657921690c74d..7177ae01f0754 100644 --- a/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll +++ b/polly/test/CodeGen/OpenMP/floord-as-argument-to-subfunction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-opt-max-coefficient=-1 -polly-parallel '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-opt-max-coefficient=-1 -polly-parallel -passes=polly-codegen -S < %s | FileCheck %s ; ; Check that we do not crash but generate parallel code ; diff --git a/polly/test/CodeGen/OpenMP/inlineasm.ll b/polly/test/CodeGen/OpenMP/inlineasm.ll index ac6c7070c1abf..82a73780886e3 100644 --- a/polly/test/CodeGen/OpenMP/inlineasm.ll +++ b/polly/test/CodeGen/OpenMP/inlineasm.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-opt-isl,polly-codegen' -polly-parallel -S < %s | FileCheck %s ; llvm.org/PR51960 ; CHECK-LABEL: define internal void @foo_polly_subfn diff --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll index 08c0cc7fe37f2..aba3ae78f7783 100644 --- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll +++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-parallel -polly-parallel-force -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-parallel \ +; RUN: -polly-parallel-force -S < %s | FileCheck %s ; ; Test to verify that we hand down the preloaded A[0] to the OpenMP subfunction. ; diff --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_different_bb.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_different_bb.ll index 8246aaa25b7b2..8cf6148a7b44c 100644 --- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_different_bb.ll +++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_different_bb.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-parallel -polly-parallel-force -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-parallel \ +; RUN: -polly-parallel-force -S < %s | FileCheck %s ; ; Test to verify that we hand down the preloaded A[0] to the OpenMP subfunction. ; diff --git a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll index 0c5208c77768b..823e5cab55ab3 100644 --- a/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll +++ b/polly/test/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-parallel -polly-parallel-force -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-parallel \ +; RUN: -polly-parallel-force -S < %s | FileCheck %s ; ; Test to verify that we hand down the preloaded A[0] to the OpenMP subfunction but ; not B[0] as it is not needed diff --git a/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll b/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll index fd039e75444b5..5557839e715ed 100644 --- a/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll +++ b/polly/test/CodeGen/OpenMP/invariant_base_pointers_preloaded.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-parallel -polly-parallel-force -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-parallel \ +; RUN: -polly-parallel-force -S < %s | FileCheck %s ; ; Test to verify that we hand down the preloaded A[0] to the OpenMP subfunction. ; diff --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll index fe8b8a3a022bc..a987fac31b743 100644 --- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll +++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-iv.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; This code has failed the scev based code generation as the scev in the scop ; contains an AddRecExpr of an outer loop. When generating code, we did not diff --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll index d1f48d92e0e75..96c6d900a7a00 100644 --- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll +++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; AST: #pragma simd ; AST: #pragma omp parallel for diff --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll index 5b032801c7282..c4ad665c7b6cf 100644 --- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll +++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values-3.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; The interesting part of this test case is the instruction: ; %tmp = bitcast i8* %call to i64** diff --git a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values.ll b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values.ll index d612faf7b67c5..82acba8b3c523 100644 --- a/polly/test/CodeGen/OpenMP/loop-body-references-outer-values.ll +++ b/polly/test/CodeGen/OpenMP/loop-body-references-outer-values.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=IR ; Make sure we correctly forward the reference to 'A' to the OpenMP subfunction. ; diff --git a/polly/test/CodeGen/OpenMP/loop-bounds-reference-outer-ids.ll b/polly/test/CodeGen/OpenMP/loop-bounds-reference-outer-ids.ll index 213cc2635fb6d..aa44658131bba 100644 --- a/polly/test/CodeGen/OpenMP/loop-bounds-reference-outer-ids.ll +++ b/polly/test/CodeGen/OpenMP/loop-bounds-reference-outer-ids.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly' -S < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=IR ; ; float A[100]; ; diff --git a/polly/test/CodeGen/OpenMP/mapped-phi-access.ll b/polly/test/CodeGen/OpenMP/mapped-phi-access.ll index fef23f141eaeb..4deab1af0ccf0 100644 --- a/polly/test/CodeGen/OpenMP/mapped-phi-access.ll +++ b/polly/test/CodeGen/OpenMP/mapped-phi-access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-parallel '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-parallel '-passes=polly-delicm,polly-codegen' -S < %s | FileCheck %s ; ; Verify that -polly-parallel can handle mapped scalar MemoryAccesses. ; diff --git a/polly/test/CodeGen/OpenMP/matmul-parallel.ll b/polly/test/CodeGen/OpenMP/matmul-parallel.ll index fd8ce87b45ae8..43326b29f7ef1 100644 --- a/polly/test/CodeGen/OpenMP/matmul-parallel.ll +++ b/polly/test/CodeGen/OpenMP/matmul-parallel.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly-custom' -polly-print-ast -disable-output -debug-only=polly-ast < %s 2>&1 | FileCheck --check-prefix=AST %s -; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly' -S < %s | FileCheck --check-prefix=CODEGEN %s +; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly-opt-isl,print' -disable-output -debug-only=polly-ast < %s 2>&1 | FileCheck --check-prefix=AST %s +; RUN: opt %loadNPMPolly -polly-parallel '-passes=polly-opt-isl,polly-codegen' -S < %s | FileCheck --check-prefix=CODEGEN %s ; REQUIRES: asserts ; Parallelization of detected matrix-multiplication. diff --git a/polly/test/CodeGen/OpenMP/new_multidim_access.ll b/polly/test/CodeGen/OpenMP/new_multidim_access.ll index 8018acdcb0e6a..5faabb4d20c1a 100644 --- a/polly/test/CodeGen/OpenMP/new_multidim_access.ll +++ b/polly/test/CodeGen/OpenMP/new_multidim_access.ll @@ -1,6 +1,10 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-import-jscop -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-import-jscop \ +; RUN: -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S -polly-parallel < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadPolly -polly-import-jscop \ +; RUN: -polly-codegen -S < %s \ +; RUN: -polly-parallel \ +; RUN: | FileCheck %s -check-prefix=IR ; void new_multidim_access(long n, long m, float A[][m]) { ; for (long i = 0; i < n; i++) diff --git a/polly/test/CodeGen/OpenMP/recomputed-srem.ll b/polly/test/CodeGen/OpenMP/recomputed-srem.ll index 99069612cd1d4..b7b3a44610f32 100644 --- a/polly/test/CodeGen/OpenMP/recomputed-srem.ll +++ b/polly/test/CodeGen/OpenMP/recomputed-srem.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly' -polly-parallel -polly-parallel-force -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -passes=polly-codegen -polly-parallel \ +; RUN: -polly-parallel-force -S < %s | FileCheck %s ; ; Test to verify that we pass %rem96 to the parallel subfunction. ; diff --git a/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll b/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll index 236362a3e23dc..c207f589e4da0 100644 --- a/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll +++ b/polly/test/CodeGen/OpenMP/reference-argument-from-non-affine-region.ll @@ -1,8 +1,17 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR - -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-scheduling=runtime -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR - -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=IR + +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen -polly-scheduling=runtime \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=IR + +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=LIBOMP-IR ; IR: @GOMP_parallel_loop_runtime_start diff --git a/polly/test/CodeGen/OpenMP/reference-other-bb.ll b/polly/test/CodeGen/OpenMP/reference-other-bb.ll index 9925187883173..dbfbd9a905086 100644 --- a/polly/test/CodeGen/OpenMP/reference-other-bb.ll +++ b/polly/test/CodeGen/OpenMP/reference-other-bb.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; IR: @foo_polly_subfn target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll b/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll index 3738266b558ed..ee43b8aa34a44 100644 --- a/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll +++ b/polly/test/CodeGen/OpenMP/reference-preceeding-loop.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; - Test the case where scalar evolution references a loop that is outside diff --git a/polly/test/CodeGen/OpenMP/reference_latest.ll b/polly/test/CodeGen/OpenMP/reference_latest.ll index fb420b06b9afb..7a8cd77bb1571 100644 --- a/polly/test/CodeGen/OpenMP/reference_latest.ll +++ b/polly/test/CodeGen/OpenMP/reference_latest.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-delicm,polly-simplify,polly-codegen' -polly-parallel -S < %s | FileCheck %s ; ; Test that parallel codegen handles scalars mapped to other arrays. ; After mapping "store double %add10" references the array "MemRef2". diff --git a/polly/test/CodeGen/OpenMP/scev-rewriting.ll b/polly/test/CodeGen/OpenMP/scev-rewriting.ll index 861a78e4acd7a..9b79f29094482 100644 --- a/polly/test/CodeGen/OpenMP/scev-rewriting.ll +++ b/polly/test/CodeGen/OpenMP/scev-rewriting.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-vectorizer=stripmine -polly-parallel -polly-parallel-force -polly-process-unprofitable '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly < %s -polly-vectorizer=stripmine -polly-parallel -polly-parallel-force -polly-process-unprofitable -passes=polly-codegen -S | FileCheck %s ; CHECK: define internal void @DoStringSort_polly_subfn target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64-unknown-linux-gnueabi" diff --git a/polly/test/CodeGen/OpenMP/single_loop.ll b/polly/test/CodeGen/OpenMP/single_loop.ll index 5e8a58fadd56c..e5aee840ade74 100644 --- a/polly/test/CodeGen/OpenMP/single_loop.ll +++ b/polly/test/CodeGen/OpenMP/single_loop.ll @@ -1,14 +1,14 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST-STRIDE4 -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -S < %s | FileCheck %s -check-prefix=IR-STRIDE4 +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-import-jscop,print' -disable-output < %s | FileCheck %s -check-prefix=AST-STRIDE4 +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-import-jscop,polly-codegen' -S < %s | FileCheck %s -check-prefix=IR-STRIDE4 -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -polly-scheduling=static -polly-scheduling-chunksize=43 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC-CHUNKED -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -polly-scheduling=static -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -polly-scheduling=dynamic -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-DYNAMIC -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -polly-scheduling=dynamic -polly-scheduling-chunksize=4 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-DYNAMIC-FOUR -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-omp-backend=LLVM -S < %s | FileCheck %s -check-prefix=LIBOMP-IR-STRIDE4 +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM -polly-scheduling=static -polly-scheduling-chunksize=43 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC-CHUNKED +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM -polly-scheduling=static -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM -polly-scheduling=dynamic -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-DYNAMIC +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM -polly-scheduling=dynamic -polly-scheduling-chunksize=4 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-DYNAMIC-FOUR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-import-jscop,polly-codegen' -polly-omp-backend=LLVM -S < %s | FileCheck %s -check-prefix=LIBOMP-IR-STRIDE4 ; This extensive test case tests the creation of the full set of OpenMP calls ; as well as the subfunction creation using a trivial loop as example. diff --git a/polly/test/CodeGen/OpenMP/single_loop_with_loop_invariant_baseptr.ll b/polly/test/CodeGen/OpenMP/single_loop_with_loop_invariant_baseptr.ll index 95324793f4fa4..c519bfdee7a58 100644 --- a/polly/test/CodeGen/OpenMP/single_loop_with_loop_invariant_baseptr.ll +++ b/polly/test/CodeGen/OpenMP/single_loop_with_loop_invariant_baseptr.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; #define N 1024 ; float A[N]; diff --git a/polly/test/CodeGen/OpenMP/single_loop_with_param.ll b/polly/test/CodeGen/OpenMP/single_loop_with_param.ll index 7334762f84f6c..f6dfd62d6bcc1 100644 --- a/polly/test/CodeGen/OpenMP/single_loop_with_param.ll +++ b/polly/test/CodeGen/OpenMP/single_loop_with_param.ll @@ -1,8 +1,18 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=IR -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=LIBOMP-IR -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -polly-omp-backend=LLVM -polly-scheduling=static -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-STATIC-IR +; RUN: opt %loadNPMPolly -polly-parallel \ +; RUN: -polly-parallel-force -passes=polly-codegen -polly-omp-backend=LLVM \ +; RUN: -polly-scheduling=static \ +; RUN: -S -verify-dom-info < %s \ +; RUN: | FileCheck %s -check-prefix=LIBOMP-STATIC-IR ; Ensure the scalars are initialized before the OpenMP code is launched. ; diff --git a/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll b/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll index 77c1b23a3f76c..934e04461f134 100644 --- a/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll +++ b/polly/test/CodeGen/OpenMP/two-parallel-loops-reference-outer-indvar.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=polly' -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=AST +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR ; This test case verifies that we create correct code even if two OpenMP loops ; share common outer variables. diff --git a/polly/test/CodeGen/PHIInExit.ll b/polly/test/CodeGen/PHIInExit.ll index 39bdac793e8a1..3e0c9d67d5ca8 100644 --- a/polly/test/CodeGen/PHIInExit.ll +++ b/polly/test/CodeGen/PHIInExit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" %struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t } diff --git a/polly/test/CodeGen/RuntimeDebugBuilder/combine_different_values.ll b/polly/test/CodeGen/RuntimeDebugBuilder/combine_different_values.ll index 9ec9804d35b0d..ccb0d15cfc3d2 100644 --- a/polly/test/CodeGen/RuntimeDebugBuilder/combine_different_values.ll +++ b/polly/test/CodeGen/RuntimeDebugBuilder/combine_different_values.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-codegen-add-debug-printing -polly-ignore-aliasing < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-codegen-add-debug-printing \ +; RUN: -polly-ignore-aliasing < %s | FileCheck %s ; #define N 10 ; void foo(float A[restrict], double B[restrict], char C[restrict], diff --git a/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll b/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll index 736c136eeb67c..4ffb7fd6e4621 100644 --- a/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll +++ b/polly/test/CodeGen/RuntimeDebugBuilder/stmt_tracing.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-codegen-trace-stmts -polly-codegen-trace-scalars '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-codegen-trace-stmts -polly-codegen-trace-scalars -passes=polly-codegen -S < %s | FileCheck %s ; define void @func(i32 %n, ptr %A) { diff --git a/polly/test/CodeGen/alias-check-multi-dim.ll b/polly/test/CodeGen/alias-check-multi-dim.ll index bab2690bddb17..0440bda74b391 100644 --- a/polly/test/CodeGen/alias-check-multi-dim.ll +++ b/polly/test/CodeGen/alias-check-multi-dim.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; CHECK: sext i32 %indvar.init to i64 diff --git a/polly/test/CodeGen/alias_metadata_too_many_arrays.ll b/polly/test/CodeGen/alias_metadata_too_many_arrays.ll index 37ec2d5b748af..4186b8521a535 100644 --- a/polly/test/CodeGen/alias_metadata_too_many_arrays.ll +++ b/polly/test/CodeGen/alias_metadata_too_many_arrays.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-ignore-aliasing -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-ignore-aliasing -S < %s \ +; RUN: | FileCheck %s ; ; void manyarrays(float A1[], float A2[], float A3[], float A4[], float A5[], ; float A6[], float A7[], float A8[], float A9[]) { diff --git a/polly/test/CodeGen/aliasing_different_base_and_access_type.ll b/polly/test/CodeGen/aliasing_different_base_and_access_type.ll index 7fed270cb51dd..8e1fc3b328355 100644 --- a/polly/test/CodeGen/aliasing_different_base_and_access_type.ll +++ b/polly/test/CodeGen/aliasing_different_base_and_access_type.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; We have to cast %B to "short *" before we create RTCs. ; diff --git a/polly/test/CodeGen/aliasing_different_pointer_types.ll b/polly/test/CodeGen/aliasing_different_pointer_types.ll index 5326af339ddac..e601c22b978da 100644 --- a/polly/test/CodeGen/aliasing_different_pointer_types.ll +++ b/polly/test/CodeGen/aliasing_different_pointer_types.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Check that we cast the different pointer types correctly before we compare ; them in the RTC's. We use i8* as max pointer type. diff --git a/polly/test/CodeGen/aliasing_multidimensional_access.ll b/polly/test/CodeGen/aliasing_multidimensional_access.ll index 5d0b40d6b59aa..e1dae03280a0e 100644 --- a/polly/test/CodeGen/aliasing_multidimensional_access.ll +++ b/polly/test/CodeGen/aliasing_multidimensional_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; Check that we calculate the maximal access into array A correctly and track the overflow state. ; diff --git a/polly/test/CodeGen/aliasing_parametric_simple_1.ll b/polly/test/CodeGen/aliasing_parametric_simple_1.ll index 1b7b85835d795..a79ba2532535d 100644 --- a/polly/test/CodeGen/aliasing_parametric_simple_1.ll +++ b/polly/test/CodeGen/aliasing_parametric_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; void jd(int *A, int *B, int c) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/CodeGen/aliasing_parametric_simple_2.ll b/polly/test/CodeGen/aliasing_parametric_simple_2.ll index fa8053ccabbea..efe4af1c9e7c5 100644 --- a/polly/test/CodeGen/aliasing_parametric_simple_2.ll +++ b/polly/test/CodeGen/aliasing_parametric_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; void jd(int *A, int *B, int c) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/CodeGen/aliasing_struct_element.ll b/polly/test/CodeGen/aliasing_struct_element.ll index 4e8570944f6c6..3079e58d7daba 100644 --- a/polly/test/CodeGen/aliasing_struct_element.ll +++ b/polly/test/CodeGen/aliasing_struct_element.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; We should only access (or compute the address of) "the first element" of %S ; as it is a single struct not a struct array. The maximal access to S, thus diff --git a/polly/test/CodeGen/alignment.ll b/polly/test/CodeGen/alignment.ll index daf7999c8072b..e0f6a959476f6 100644 --- a/polly/test/CodeGen/alignment.ll +++ b/polly/test/CodeGen/alignment.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Check that the special alignment information is kept ; diff --git a/polly/test/CodeGen/annotated_alias_scopes.ll b/polly/test/CodeGen/annotated_alias_scopes.ll index 7d2d9038270a9..ada03e0663722 100644 --- a/polly/test/CodeGen/annotated_alias_scopes.ll +++ b/polly/test/CodeGen/annotated_alias_scopes.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s --check-prefix=SCOPES +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s --check-prefix=SCOPES ; ; Check that we create alias scopes that indicate the accesses to A, B and C cannot alias in any way. ; diff --git a/polly/test/CodeGen/blas_sscal_simplified.ll b/polly/test/CodeGen/blas_sscal_simplified.ll index 461af09b5b289..99f2eae9dd8e5 100644 --- a/polly/test/CodeGen/blas_sscal_simplified.ll +++ b/polly/test/CodeGen/blas_sscal_simplified.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ; ; Regression test for a bug in the runtime check generation. diff --git a/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll b/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll index 5eb6076892f3e..5dba93373b70b 100644 --- a/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll +++ b/polly/test/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable -passes=polly-codegen -disable-output < %s ; ; CHECK: store i32 %tmp14_p_scalar_, ptr %tmp14.s2a ; CHECK: %tmp14.final_reload = load i32, ptr %tmp14.s2a diff --git a/polly/test/CodeGen/constant_condition.ll b/polly/test/CodeGen/constant_condition.ll index 9d3c5a811b16a..905aa52df5080 100644 --- a/polly/test/CodeGen/constant_condition.ll +++ b/polly/test/CodeGen/constant_condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s +;RUN: opt %loadNPMPolly '-passes=polly-prepare,scop(print)' -disable-output < %s 2>&1 | FileCheck %s ;#include ;int A[1]; diff --git a/polly/test/CodeGen/create-conditional-scop.ll b/polly/test/CodeGen/create-conditional-scop.ll index d4df48b757d3d..b8c9a81b71a91 100644 --- a/polly/test/CodeGen/create-conditional-scop.ll +++ b/polly/test/CodeGen/create-conditional-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -verify-loop-info -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -verify-loop-info < %s -S | FileCheck %s target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32" diff --git a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll index 31b5e69ae4c6a..dfef4202391d4 100644 --- a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll +++ b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ; ; Check we do not crash even though the dead %tmp8 is referenced by a parameter ; and we do not pre-load it (as it is dead). diff --git a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll index 88b844bea5e4e..fcc6764ce9c21 100644 --- a/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll +++ b/polly/test/CodeGen/dead_invariant_load_instruction_referenced_by_parameter_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ; ; Check we do not crash even though there is a dead load that is referenced by ; a parameter and we do not pre-load it (as it is dead). diff --git a/polly/test/CodeGen/debug-intrinsics.ll b/polly/test/CodeGen/debug-intrinsics.ll index f397a4b83d88a..ed4b81a8e3a3c 100644 --- a/polly/test/CodeGen/debug-intrinsics.ll +++ b/polly/test/CodeGen/debug-intrinsics.ll @@ -1,6 +1,10 @@ -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=false '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -polly-analyze-read-only-scalars=false -passes=polly-codegen -S < %s | \ +; RUN: FileCheck %s -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=true '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -polly-analyze-read-only-scalars=true -passes=polly-codegen -S < %s | \ +; RUN: FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll b/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll index 7f6f128c2cff2..edc03333a358d 100644 --- a/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll +++ b/polly/test/CodeGen/dominance_problem_after_early_codegen_bailout.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s ; ; This caused dominance problems at some point as we do bail out during ; code generation. Just verify it runs through. diff --git a/polly/test/CodeGen/empty_domain_in_context.ll b/polly/test/CodeGen/empty_domain_in_context.ll index f6c39eb0517bc..a2fe805f402e0 100644 --- a/polly/test/CodeGen/empty_domain_in_context.ll +++ b/polly/test/CodeGen/empty_domain_in_context.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-optree,polly-opt-isl,polly-codegen' -S < %s | FileCheck %s ; ; llvm.org/PR35362 ; isl codegen does not allow to generate isl_ast_expr from pw_aff which have an diff --git a/polly/test/CodeGen/entry_with_trivial_phi.ll b/polly/test/CodeGen/entry_with_trivial_phi.ll index 09570938a9ca1..f2c9da04d6495 100644 --- a/polly/test/CodeGen/entry_with_trivial_phi.ll +++ b/polly/test/CodeGen/entry_with_trivial_phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s ; ; The entry of this scop's simple region (entry.split => for.end) has an trivial ; PHI node. LCSSA may create such PHI nodes. This is a breakdown of this case in diff --git a/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll b/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll index 7d8ef7acf9435..2f1ec1a7872aa 100644 --- a/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll +++ b/polly/test/CodeGen/entry_with_trivial_phi_other_bb.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; The entry of this scop's simple region (entry.split => for.end) has an trivial ; PHI node that is used in a different of the scop region. LCSSA may create such diff --git a/polly/test/CodeGen/error-stmt-in-non-affine-region.ll b/polly/test/CodeGen/error-stmt-in-non-affine-region.ll index c5c11c8ea2f8f..63b6becd19574 100644 --- a/polly/test/CodeGen/error-stmt-in-non-affine-region.ll +++ b/polly/test/CodeGen/error-stmt-in-non-affine-region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; XFAIL: * ; ; CHECK-LABEL: polly.stmt.if.then: diff --git a/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll b/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll index 1e38210c733d9..abec28894f45b 100644 --- a/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll +++ b/polly/test/CodeGen/error_block_contains_invalid_memory_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/exprModDiv.ll b/polly/test/CodeGen/exprModDiv.ll index b123e90c07882..c9b419abe3242 100644 --- a/polly/test/CodeGen/exprModDiv.ll +++ b/polly/test/CodeGen/exprModDiv.ll @@ -1,5 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=pow2 -S < %s | FileCheck %s -check-prefix=POW2 +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-import-jscop-postfix=pow2 \ +; RUN: -S < %s | FileCheck %s -check-prefix=POW2 ; ; void exprModDiv(float *A, float *B, float *C, long N, long p) { ; for (long i = 0; i < N; i++) diff --git a/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll b/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll index c7873baeeaeb7..1ca2413fd5e19 100644 --- a/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll +++ b/polly/test/CodeGen/hoisted_load_escapes_through_phi.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=false < %s | FileCheck %s -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen \ +; RUN: -polly-invariant-load-hoisting=false < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; ; Check that we generate valid code even if the load of cont_STACKPOINTER is ; hoisted in one SCoP and used (through the phi node %tmp2). diff --git a/polly/test/CodeGen/hoisting_1.ll b/polly/test/CodeGen/hoisting_1.ll index 31ae969cd3156..aa29bfd7dbcbc 100644 --- a/polly/test/CodeGen/hoisting_1.ll +++ b/polly/test/CodeGen/hoisting_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=polly' -polly-allow-differing-element-types -disable-output %s +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -passes=polly-codegen -polly-allow-differing-element-types -disable-output %s ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/hoisting_2.ll b/polly/test/CodeGen/hoisting_2.ll index eb6f7ae5ff6d1..1b913f2cb07be 100644 --- a/polly/test/CodeGen/hoisting_2.ll +++ b/polly/test/CodeGen/hoisting_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=polly' -polly-allow-differing-element-types -disable-output %s +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -passes=polly-codegen -polly-allow-differing-element-types -disable-output %s ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/inner_scev_sdiv_1.ll b/polly/test/CodeGen/inner_scev_sdiv_1.ll index f7595a6afb0be..d210105c46baf 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_1.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s ; ; Excerpt from the test-suite's oggenc reduced using bugpoint. ; diff --git a/polly/test/CodeGen/inner_scev_sdiv_2.ll b/polly/test/CodeGen/inner_scev_sdiv_2.ll index 247c102834b25..33233fe2fdf17 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_2.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; The SCEV expression in this test case refers to a sequence of sdiv ; instructions, which are part of different bbs in the SCoP. When code diff --git a/polly/test/CodeGen/inner_scev_sdiv_3.ll b/polly/test/CodeGen/inner_scev_sdiv_3.ll index fc1cce41c0f4e..a8c626347efe9 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_3.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; This test case has a inner SCEV sdiv that will escape the SCoP. Just check we ; do not crash and generate valid code. diff --git a/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll b/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll index 1ff598a4a021a..31c14e85f253e 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_in_lb.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; CHECK: [N] -> { Stmt_bb11[i0, i1] : i0 < N and i1 >= 0 and 3i1 <= -3 + i0 }; ; CODEGEN: polly diff --git a/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll b/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll index 4cd146ddbf62e..b42371b0891e6 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_in_lb_invariant.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen \ +; RUN: < %s | FileCheck %s ; ; Check that this will not crash our code generation. ; diff --git a/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll b/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll index 586875bbefcbe..45af63402c986 100644 --- a/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll +++ b/polly/test/CodeGen/inner_scev_sdiv_in_rtc.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s ; ; This will just check that we generate valid code here. ; diff --git a/polly/test/CodeGen/intrinsics_lifetime.ll b/polly/test/CodeGen/intrinsics_lifetime.ll index 0f35664eb7e1c..a708548798ebb 100644 --- a/polly/test/CodeGen/intrinsics_lifetime.ll +++ b/polly/test/CodeGen/intrinsics_lifetime.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -S < %s | FileCheck %s ; ; Verify that we remove the lifetime markers from everywhere. ; diff --git a/polly/test/CodeGen/intrinsics_misc.ll b/polly/test/CodeGen/intrinsics_misc.ll index 4a64c1a641182..a643b8accd4e9 100644 --- a/polly/test/CodeGen/intrinsics_misc.ll +++ b/polly/test/CodeGen/intrinsics_misc.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -S < %s | FileCheck %s ; ; Verify that we remove the misc intrinsics from the optimized SCoP. ; diff --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll index 15fe0d9e22416..e7cbf748bea73 100644 --- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll +++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; ; This crashed our codegen at some point, verify it runs through ; diff --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll index c1ab026e97701..24e9240c234d1 100644 --- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll +++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order-3.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; ; This crashed our codegen at some point, verify it runs through ; diff --git a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll index f0c833ce1bce1..d1d861e316ee4 100644 --- a/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll +++ b/polly/test/CodeGen/inv-load-lnt-crash-wrong-order.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; ; This crashed our codegen at some point, verify it runs through ; diff --git a/polly/test/CodeGen/invariant-load-dimension.ll b/polly/test/CodeGen/invariant-load-dimension.ll index 13576b9f40455..21e53055c56b0 100644 --- a/polly/test/CodeGen/invariant-load-dimension.ll +++ b/polly/test/CodeGen/invariant-load-dimension.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable -polly-invariant-load-hoisting '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-process-unprofitable -polly-invariant-load-hoisting < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly -polly-process-unprofitable -polly-invariant-load-hoisting '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS +; RUN: opt %loadNPMPolly -S < %s -passes=polly-codegen -polly-process-unprofitable -polly-invariant-load-hoisting | FileCheck %s -check-prefix=CODEGEN target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64" diff --git a/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll b/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll index d92d97012b33c..1fd9cb81771c6 100644 --- a/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll +++ b/polly/test/CodeGen/invariant-load-preload-base-pointer-origin-first.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true < %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-invariant-load-hoisting=true < %s ; ; Check that we generate valid code as we did non preload the base pointer ; origin of %tmp4 at some point. diff --git a/polly/test/CodeGen/invariant_cannot_handle_void.ll b/polly/test/CodeGen/invariant_cannot_handle_void.ll index f6dcac08dffca..420cb608f9ba4 100644 --- a/polly/test/CodeGen/invariant_cannot_handle_void.ll +++ b/polly/test/CodeGen/invariant_cannot_handle_void.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s ; ; The offset of the %tmp1 load wrt. to %buff (62 bytes) is not divisible ; by the type size (i32 = 4 bytes), thus we will have to represent %buff diff --git a/polly/test/CodeGen/invariant_load.ll b/polly/test/CodeGen/invariant_load.ll index c89da73efc839..2d5e6042ea6a4 100644 --- a/polly/test/CodeGen/invariant_load.ll +++ b/polly/test/CodeGen/invariant_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK-NEXT: %polly.access.B = getelementptr i32, ptr %B, i64 0 diff --git a/polly/test/CodeGen/invariant_load_address_space.ll b/polly/test/CodeGen/invariant_load_address_space.ll index 7d5139cc55f88..3d1958e5b8a43 100644 --- a/polly/test/CodeGen/invariant_load_address_space.ll +++ b/polly/test/CodeGen/invariant_load_address_space.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK-NEXT: %polly.access.B = getelementptr i32, ptr addrspace(1) %B, i64 0 diff --git a/polly/test/CodeGen/invariant_load_alias_metadata.ll b/polly/test/CodeGen/invariant_load_alias_metadata.ll index 2a704ee9c576a..252463384a5c8 100644 --- a/polly/test/CodeGen/invariant_load_alias_metadata.ll +++ b/polly/test/CodeGen/invariant_load_alias_metadata.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true \ +; RUN: -S < %s | FileCheck %s ; ; This test case checks whether Polly generates alias metadata in case of ; the ublas gemm kernel and polly-invariant-load-hoisting. diff --git a/polly/test/CodeGen/invariant_load_base_pointer.ll b/polly/test/CodeGen/invariant_load_base_pointer.ll index f6b873994036c..d4ac433475f05 100644 --- a/polly/test/CodeGen/invariant_load_base_pointer.ll +++ b/polly/test/CodeGen/invariant_load_base_pointer.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK-NEXT: %polly.access.BPLoc = getelementptr ptr, ptr %BPLoc, i64 0 diff --git a/polly/test/CodeGen/invariant_load_base_pointer_conditional.ll b/polly/test/CodeGen/invariant_load_base_pointer_conditional.ll index 4dbcc3b3b049d..06a9a93363ed9 100644 --- a/polly/test/CodeGen/invariant_load_base_pointer_conditional.ll +++ b/polly/test/CodeGen/invariant_load_base_pointer_conditional.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK-NEXT: %0 = sext i32 %N to i64 diff --git a/polly/test/CodeGen/invariant_load_base_pointer_conditional_2.ll b/polly/test/CodeGen/invariant_load_base_pointer_conditional_2.ll index 39520c8fd8217..66ab9a31b1032 100644 --- a/polly/test/CodeGen/invariant_load_base_pointer_conditional_2.ll +++ b/polly/test/CodeGen/invariant_load_base_pointer_conditional_2.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true --polly-overflow-tracking=always < %s | FileCheck %s --check-prefix=IRA +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-invariant-load-hoisting=true --polly-overflow-tracking=always < %s | FileCheck %s --check-prefix=IRA ; ; As (p + q) can overflow we have to check that we load from ; I[p + q] only if it does not. diff --git a/polly/test/CodeGen/invariant_load_canonicalize_array_baseptrs.ll b/polly/test/CodeGen/invariant_load_canonicalize_array_baseptrs.ll index 414ca127a251f..fa904e9b96d34 100644 --- a/polly/test/CodeGen/invariant_load_canonicalize_array_baseptrs.ll +++ b/polly/test/CodeGen/invariant_load_canonicalize_array_baseptrs.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; CHECK: %polly.access.A = getelementptr ptr, ptr %A, i64 0 ; CHECK: %polly.access.A.load = load ptr, ptr %polly.access.A diff --git a/polly/test/CodeGen/invariant_load_condition.ll b/polly/test/CodeGen/invariant_load_condition.ll index f0782c023378b..36e588329d669 100644 --- a/polly/test/CodeGen/invariant_load_condition.ll +++ b/polly/test/CodeGen/invariant_load_condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK-NEXT: %polly.access.C = getelementptr i32, ptr %C, i64 0 diff --git a/polly/test/CodeGen/invariant_load_different_sized_types.ll b/polly/test/CodeGen/invariant_load_different_sized_types.ll index 034c3587a0708..0a88bb70966d2 100644 --- a/polly/test/CodeGen/invariant_load_different_sized_types.ll +++ b/polly/test/CodeGen/invariant_load_different_sized_types.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S -polly-allow-differing-element-types < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S \ +; RUN: -polly-allow-differing-element-types < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/invariant_load_escaping.ll b/polly/test/CodeGen/invariant_load_escaping.ll index 85578d3ba0992..416148b72303b 100644 --- a/polly/test/CodeGen/invariant_load_escaping.ll +++ b/polly/test/CodeGen/invariant_load_escaping.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; int f(int *A, int *B) { ; // Possible aliasing between A and B but if not then *B would be diff --git a/polly/test/CodeGen/invariant_load_escaping_second_scop.ll b/polly/test/CodeGen/invariant_load_escaping_second_scop.ll index ff6e9a8e3ddae..906bfc1805d39 100644 --- a/polly/test/CodeGen/invariant_load_escaping_second_scop.ll +++ b/polly/test/CodeGen/invariant_load_escaping_second_scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-process-unprofitable -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-process-unprofitable -S < %s | FileCheck %s ; ; void fence(void); ; diff --git a/polly/test/CodeGen/invariant_load_in_non_affine_subregion.ll b/polly/test/CodeGen/invariant_load_in_non_affine_subregion.ll index edd38cab2afba..ab02e639f0d2a 100644 --- a/polly/test/CodeGen/invariant_load_in_non_affine_subregion.ll +++ b/polly/test/CodeGen/invariant_load_in_non_affine_subregion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; This crashed at some point as the invariant load is in a non-affine ; subregion. Just check it does not anymore. diff --git a/polly/test/CodeGen/invariant_load_loop_ub.ll b/polly/test/CodeGen/invariant_load_loop_ub.ll index 923102440c547..1db27ad8e58ba 100644 --- a/polly/test/CodeGen/invariant_load_loop_ub.ll +++ b/polly/test/CodeGen/invariant_load_loop_ub.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-process-unprofitable -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-process-unprofitable -S < %s | FileCheck %s ; ; CHECK: polly.start ; diff --git a/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll b/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll index 0e381b863fb8b..5a11adcdebbc5 100644 --- a/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll +++ b/polly/test/CodeGen/invariant_load_not_executed_but_in_parameters.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s ; ; Check that this does not crash as the invariant load is not executed (thus ; not preloaded) but still referenced by one of the parameters. diff --git a/polly/test/CodeGen/invariant_load_outermost.ll b/polly/test/CodeGen/invariant_load_outermost.ll index bbbe1f1663964..7e0550fb3be94 100644 --- a/polly/test/CodeGen/invariant_load_outermost.ll +++ b/polly/test/CodeGen/invariant_load_outermost.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; CHECK: polly.start diff --git a/polly/test/CodeGen/invariant_load_parameters_cyclic_dependence.ll b/polly/test/CodeGen/invariant_load_parameters_cyclic_dependence.ll index 9fe343f752d14..abf957b556daa 100644 --- a/polly/test/CodeGen/invariant_load_parameters_cyclic_dependence.ll +++ b/polly/test/CodeGen/invariant_load_parameters_cyclic_dependence.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; SCOP: Assumed Context: ; SCOP-NEXT: [p_0, tmp4] -> { : } diff --git a/polly/test/CodeGen/invariant_load_ptr_ptr_noalias.ll b/polly/test/CodeGen/invariant_load_ptr_ptr_noalias.ll index dc1c2bca4b6e3..b565f1bd5096a 100644 --- a/polly/test/CodeGen/invariant_load_ptr_ptr_noalias.ll +++ b/polly/test/CodeGen/invariant_load_ptr_ptr_noalias.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-ignore-aliasing -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK: %polly.access.A = getelementptr ptr, ptr %A, i64 42 diff --git a/polly/test/CodeGen/invariant_load_scalar_dep.ll b/polly/test/CodeGen/invariant_load_scalar_dep.ll index bb60c50b1ab40..ba2999e27984d 100644 --- a/polly/test/CodeGen/invariant_load_scalar_dep.ll +++ b/polly/test/CodeGen/invariant_load_scalar_dep.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s ; ; CHECK-LABEL: polly.preload.begin: ; CHECK: %polly.access.B = getelementptr i32, ptr %B, i64 0 diff --git a/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll b/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll index 87c407e05b972..26c964c9c6a72 100644 --- a/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll +++ b/polly/test/CodeGen/invariant_load_scalar_escape_alloca_sharing.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s ; ; Verify the preloaded %tmp0 is stored and communicated in the same alloca. ; In this case, we do not reload %ncol.load from the scalar stack slot, but diff --git a/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_1.ll b/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_1.ll index 5e2b28c53019e..6bf11d5697bd7 100644 --- a/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_1.ll +++ b/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true < %s ; ; Check we do not crash even though we pre-load values with different types ; from the same base pointer. diff --git a/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_2.ll b/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_2.ll index 20d9f6d40b7d6..07ce941522459 100644 --- a/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_2.ll +++ b/polly/test/CodeGen/invariant_loads_from_struct_with_different_types_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true < %s ; ; Check we do not crash even though we pre-load values with different types ; from the same base pointer. diff --git a/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll b/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll index 51f8a55d1a400..19b30afd33ba7 100644 --- a/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll +++ b/polly/test/CodeGen/invariant_loads_ignore_parameter_bounds.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting -polly-ignore-parameter-bounds -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting \ +; RUN: -polly-ignore-parameter-bounds -S < %s | FileCheck %s ; CHECK: polly.preload.begin: ; CHECK-NEXT: %global.load = load i32, ptr @global, align 4, !alias.scope !0, !noalias !3 diff --git a/polly/test/CodeGen/invariant_verify_function_failed.ll b/polly/test/CodeGen/invariant_verify_function_failed.ll index 432c155fdd3ae..1dcc175ebb163 100644 --- a/polly/test/CodeGen/invariant_verify_function_failed.ll +++ b/polly/test/CodeGen/invariant_verify_function_failed.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-print-detect -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,scop(polly-codegen)' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; This crashed at some point as the pointer returned by the call ; to @__errno_location is invariant and defined in the SCoP but not diff --git a/polly/test/CodeGen/invariant_verify_function_failed_2.ll b/polly/test/CodeGen/invariant_verify_function_failed_2.ll index 65ba2cd993193..43b3d99e11a2f 100644 --- a/polly/test/CodeGen/invariant_verify_function_failed_2.ll +++ b/polly/test/CodeGen/invariant_verify_function_failed_2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true %s | FileCheck %s +; RUN: opt %loadNPMPolly -S '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s ; ; Check we generate valid code. diff --git a/polly/test/CodeGen/issue56692.ll b/polly/test/CodeGen/issue56692.ll index 5e225d73bdcd3..34c4e398e2ac0 100644 --- a/polly/test/CodeGen/issue56692.ll +++ b/polly/test/CodeGen/issue56692.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -polly-omp-backend=LLVM -polly-codegen-verify '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-parallel -polly-parallel-force -polly-omp-backend=LLVM -polly-codegen-verify -passes=polly-codegen -S < %s | FileCheck %s ; https://github.com/llvm/llvm-project/issues/56692 ; ; CHECK: call void (ptr, i32, ptr, ...) @__kmpc_fork_call({{.*}}), !dbg ![[OPTLOC:[0-9]+]] diff --git a/polly/test/CodeGen/large-numbers-in-boundary-context.ll b/polly/test/CodeGen/large-numbers-in-boundary-context.ll index 4d55273618df6..b228baf9bdf22 100644 --- a/polly/test/CodeGen/large-numbers-in-boundary-context.ll +++ b/polly/test/CodeGen/large-numbers-in-boundary-context.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; XFAIL: * ; ; The boundary context contains a constant that does not fit in 64 bits. Hence, diff --git a/polly/test/CodeGen/load_subset_with_context.ll b/polly/test/CodeGen/load_subset_with_context.ll index 33b3d3b72225f..ccd4198b9fe85 100644 --- a/polly/test/CodeGen/load_subset_with_context.ll +++ b/polly/test/CodeGen/load_subset_with_context.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; A load must provide a value for every statement instance. ; Statement instances not in the SCoP's context are irrelevant. diff --git a/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll b/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll index dc0c5517d7ca5..f43247b3e5057 100644 --- a/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll +++ b/polly/test/CodeGen/loop-invariant-load-type-mismatch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/CodeGen/loop_with_condition.ll b/polly/test/CodeGen/loop_with_condition.ll index cf28a4de63f3b..49e312404cca8 100644 --- a/polly/test/CodeGen/loop_with_condition.ll +++ b/polly/test/CodeGen/loop_with_condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s ;#include ;#define N 1024 diff --git a/polly/test/CodeGen/loop_with_condition_2.ll b/polly/test/CodeGen/loop_with_condition_2.ll index 1d8a8132a79cb..8ae38eeeb4982 100644 --- a/polly/test/CodeGen/loop_with_condition_2.ll +++ b/polly/test/CodeGen/loop_with_condition_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; Verify that we actually detect this loop as the innermost loop even though ; there is a conditional inside. diff --git a/polly/test/CodeGen/loop_with_condition_ineq.ll b/polly/test/CodeGen/loop_with_condition_ineq.ll index c222f67ed7836..64019a6090212 100644 --- a/polly/test/CodeGen/loop_with_condition_ineq.ll +++ b/polly/test/CodeGen/loop_with_condition_ineq.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s ;#include ;#define N 1024 diff --git a/polly/test/CodeGen/loop_with_condition_nested.ll b/polly/test/CodeGen/loop_with_condition_nested.ll index 32256a7344664..5dcb51dcb91cd 100644 --- a/polly/test/CodeGen/loop_with_condition_nested.ll +++ b/polly/test/CodeGen/loop_with_condition_nested.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' < %s | opt -passes='print' -disable-output 2>&1 | FileCheck %s -check-prefix=LOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen < %s | opt -passes='print' -disable-output 2>&1 | FileCheck %s -check-prefix=LOOPS ;#include diff --git a/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll b/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll index 5d7f67f1f9060..26fe4eb82ae49 100644 --- a/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll +++ b/polly/test/CodeGen/loop_with_conditional_entry_edge_split_hard_case.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Test case to trigger the hard way of creating a unique entering ; edge for the SCoP. It is triggered because the entering edge diff --git a/polly/test/CodeGen/memcpy_annotations.ll b/polly/test/CodeGen/memcpy_annotations.ll index c3ffe4abcddd6..501aa8fbea4d6 100644 --- a/polly/test/CodeGen/memcpy_annotations.ll +++ b/polly/test/CodeGen/memcpy_annotations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Verify that @llvm.memcpy does not get a !alias.scope annotation. ; @llvm.memcpy takes two pointers, it is ambiguous to which the diff --git a/polly/test/CodeGen/multidim-non-matching-typesize-2.ll b/polly/test/CodeGen/multidim-non-matching-typesize-2.ll index b084672971855..f63eb18118e77 100644 --- a/polly/test/CodeGen/multidim-non-matching-typesize-2.ll +++ b/polly/test/CodeGen/multidim-non-matching-typesize-2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly --aa-pipeline= '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -disable-basic-aa -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s ; CHECK: polly target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128" diff --git a/polly/test/CodeGen/multidim-non-matching-typesize.ll b/polly/test/CodeGen/multidim-non-matching-typesize.ll index 66a4fdf42bc8e..63e43c83ada5f 100644 --- a/polly/test/CodeGen/multidim-non-matching-typesize.ll +++ b/polly/test/CodeGen/multidim-non-matching-typesize.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly --aa-pipeline= '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -disable-basic-aa -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128" diff --git a/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll b/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll index d3f8b718889e4..86b17573caada 100644 --- a/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll +++ b/polly/test/CodeGen/multidim_2d_parametric_array_static_loop_bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/CodeGen/multidim_alias_check.ll b/polly/test/CodeGen/multidim_alias_check.ll index e85d7c9e7785d..93e34e2fd0fc1 100644 --- a/polly/test/CodeGen/multidim_alias_check.ll +++ b/polly/test/CodeGen/multidim_alias_check.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; CHECK: %polly.access.sext.A = sext i32 %n to i64 diff --git a/polly/test/CodeGen/multiple-codegens.ll b/polly/test/CodeGen/multiple-codegens.ll index cb12700bfb561..a63f8a615ff9e 100644 --- a/polly/test/CodeGen/multiple-codegens.ll +++ b/polly/test/CodeGen/multiple-codegens.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly,polly' -S < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=function(polly),function(polly)' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(polly-opt-isl,polly-codegen,polly-codegen)" -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(polly-opt-isl,polly-codegen),scop(polly-codegen)" -S < %s | FileCheck %s ; ; llvm.org/PR34441 ; Properly handle multiple -polly-scops/-polly-codegen in the same diff --git a/polly/test/CodeGen/multiple-scops-in-a-row.ll b/polly/test/CodeGen/multiple-scops-in-a-row.ll index b92359782d999..effae223c152a 100644 --- a/polly/test/CodeGen/multiple-scops-in-a-row.ll +++ b/polly/test/CodeGen/multiple-scops-in-a-row.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; This test case has two scops in a row. When code generating the first scop, ; the second scop is invalidated. This test case verifies that we do not crash diff --git a/polly/test/CodeGen/multiple-types-invariant-load-2.ll b/polly/test/CodeGen/multiple-types-invariant-load-2.ll index 96615079be365..101fcaff0c82e 100644 --- a/polly/test/CodeGen/multiple-types-invariant-load-2.ll +++ b/polly/test/CodeGen/multiple-types-invariant-load-2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-allow-differing-element-types < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-allow-differing-element-types < %s | FileCheck %s ; CHECK: polly diff --git a/polly/test/CodeGen/multiple-types-invariant-load.ll b/polly/test/CodeGen/multiple-types-invariant-load.ll index ca89cb53e09b7..930041eaddaad 100644 --- a/polly/test/CodeGen/multiple-types-invariant-load.ll +++ b/polly/test/CodeGen/multiple-types-invariant-load.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-differing-element-types '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-differing-element-types -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; CHECK: %polly.access.global.load = getelementptr i32, ptr %global.load, i64 0 ; CHECK: %polly.access.global.load.load = load i32, ptr %polly.access.global.load diff --git a/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll b/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll index 8198108b22059..1e06a7e186bb0 100644 --- a/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll +++ b/polly/test/CodeGen/multiple_sai_fro_same_base_address.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-position=before-vectorizer '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP -; RUN: opt %loadNPMPolly -polly-position=before-vectorizer '-passes=polly' -S < %s | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly -polly-position=before-vectorizer '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -polly-position=before-vectorizer -passes=polly-codegen -S < %s | FileCheck %s --check-prefix=IR ; The IR has two ScopArrayInfo for the value %next.0. This used to produce two ; phi nodes in polly.merge_new_and_old, one illegaly using the result of the diff --git a/polly/test/CodeGen/no-overflow-tracking.ll b/polly/test/CodeGen/no-overflow-tracking.ll index f915b5a0772e6..d5ad9a7aef239 100644 --- a/polly/test/CodeGen/no-overflow-tracking.ll +++ b/polly/test/CodeGen/no-overflow-tracking.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true -polly-overflow-tracking=never '-passes=polly' -S < %s | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true -polly-overflow-tracking=never -passes=polly-codegen -S < %s | FileCheck %s --check-prefix=IR ; ; As (p + q) can overflow we have to check that we load from ; I[p + q] only if it does not. diff --git a/polly/test/CodeGen/no_guard_bb.ll b/polly/test/CodeGen/no_guard_bb.ll index 604c5ac54bcdb..a022083f43a9e 100644 --- a/polly/test/CodeGen/no_guard_bb.ll +++ b/polly/test/CodeGen/no_guard_bb.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -verify-dom-info < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S -verify-dom-info < %s | FileCheck %s ; ; CHECK-NOT: br i1 true, label %polly.{{.*}}, label %polly.{{.*}} ; diff --git a/polly/test/CodeGen/non-affine-dominance-generated-entering.ll b/polly/test/CodeGen/non-affine-dominance-generated-entering.ll index ebb02a90ffb5d..6015516a3bc49 100644 --- a/polly/test/CodeGen/non-affine-dominance-generated-entering.ll +++ b/polly/test/CodeGen/non-affine-dominance-generated-entering.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; llvm.org/PR25439 ; Scalar reloads in the generated entering block were not recognized as diff --git a/polly/test/CodeGen/non-affine-exit-node-dominance.ll b/polly/test/CodeGen/non-affine-exit-node-dominance.ll index ff9f504295672..0d0f634ed7c16 100644 --- a/polly/test/CodeGen/non-affine-exit-node-dominance.ll +++ b/polly/test/CodeGen/non-affine-exit-node-dominance.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; llvm.org/PR25439 ; The dominance of the generated non-affine subregion block was based on the diff --git a/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll index 2ad1e75216362..bfa3c156ea75d 100644 --- a/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll +++ b/polly/test/CodeGen/non-affine-phi-node-expansion-2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll index 386fe5f9f207f..b9386333a79b4 100644 --- a/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll +++ b/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s define void @foo(ptr %A, i1 %cond0, i1 %cond1) { entry: diff --git a/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll b/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll index 5e5f34d99bde3..6460c427270f4 100644 --- a/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll +++ b/polly/test/CodeGen/non-affine-phi-node-expansion-4.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s define void @foo(ptr %A, i1 %cond0, i1 %cond1) { entry: diff --git a/polly/test/CodeGen/non-affine-phi-node-expansion.ll b/polly/test/CodeGen/non-affine-phi-node-expansion.ll index db9f0d518041b..1b6802f1a4c35 100644 --- a/polly/test/CodeGen/non-affine-phi-node-expansion.ll +++ b/polly/test/CodeGen/non-affine-phi-node-expansion.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -S < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" %struct.wombat = type {[4 x i32]} diff --git a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll index 096eb8609e1bb..007a4c586aa32 100644 --- a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll +++ b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused the code generation to generate invalid code as the same operand ; of the PHI node in the non-affine region was synthesized at the wrong place. diff --git a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize.ll b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize.ll index 2810a8ab5361f..20edbf2bd6c03 100644 --- a/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize.ll +++ b/polly/test/CodeGen/non-affine-region-exit-phi-incoming-synthesize.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused the code generation to generate invalid code as the same BBMap was ; used for the whole non-affine region. When %add is synthesized for the diff --git a/polly/test/CodeGen/non-affine-region-implicit-store.ll b/polly/test/CodeGen/non-affine-region-implicit-store.ll index cdb2000d90d6b..0ff39d3fe882d 100644 --- a/polly/test/CodeGen/non-affine-region-implicit-store.ll +++ b/polly/test/CodeGen/non-affine-region-implicit-store.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; llvm.org/PR25438 ; After loop versioning, a dominance check of a non-affine subregion's exit node diff --git a/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll b/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll index b4889c76079cc..7df3d8976ea80 100644 --- a/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll +++ b/polly/test/CodeGen/non-affine-region-phi-references-in-scop-value.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-allow-nonaffine-loops -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-allow-nonaffine-loops \ +; RUN: -S < %s | FileCheck %s ; This test verifies that values defined in another scop statement and used by ; PHI-nodes in non-affine regions are code generated correctly. diff --git a/polly/test/CodeGen/non-affine-subregion-dominance-reuse.ll b/polly/test/CodeGen/non-affine-subregion-dominance-reuse.ll index 45465c627f55a..179062dd62d0a 100644 --- a/polly/test/CodeGen/non-affine-subregion-dominance-reuse.ll +++ b/polly/test/CodeGen/non-affine-subregion-dominance-reuse.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -verify-dom-info < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S -verify-dom-info \ +; RUN: < %s | FileCheck %s ; ; Check that we do not reuse the B[i-1] GEP created in block S again in ; block Q. Hence, we create two GEPs for B[i-1]: diff --git a/polly/test/CodeGen/non-affine-switch.ll b/polly/test/CodeGen/non-affine-switch.ll index 90d5efdc3a9f5..427e7e2461f1d 100644 --- a/polly/test/CodeGen/non-affine-switch.ll +++ b/polly/test/CodeGen/non-affine-switch.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -S -passes=polly-codegen < %s | FileCheck %s ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/CodeGen/non-affine-synthesized-in-branch.ll b/polly/test/CodeGen/non-affine-synthesized-in-branch.ll index 5bb4fd19f4fd1..292c0f2b53941 100644 --- a/polly/test/CodeGen/non-affine-synthesized-in-branch.ll +++ b/polly/test/CodeGen/non-affine-synthesized-in-branch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable -passes=polly-codegen -S < %s | FileCheck %s ; ; llvm.org/PR25412 ; %synthgep caused %gep to be synthesized in subregion_if which was reused for diff --git a/polly/test/CodeGen/non-affine-update.ll b/polly/test/CodeGen/non-affine-update.ll index 582607787eb7d..03f091a405017 100644 --- a/polly/test/CodeGen/non-affine-update.ll +++ b/polly/test/CodeGen/non-affine-update.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -S < %s | FileCheck %s ; ; void non-affine-update(double A[], double C[], double B[]) { ; for (int i = 0; i < 10; i++) { diff --git a/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll b/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll index eaf74d9c63e0e..153cdb7ed9f6c 100644 --- a/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll +++ b/polly/test/CodeGen/non-hoisted-load-needed-as-base-ptr.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=polly' -disable-output %s +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -passes=polly-codegen -disable-output %s ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/non_affine_float_compare.ll b/polly/test/CodeGen/non_affine_float_compare.ll index 9709e231a4e86..a359b662e6579 100644 --- a/polly/test/CodeGen/non_affine_float_compare.ll +++ b/polly/test/CodeGen/non_affine_float_compare.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-allow-nonaffine-branches -S -verify-dom-info < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen \ +; RUN: -polly-allow-nonaffine-branches -S -verify-dom-info \ +; RUN: < %s | FileCheck %s ; ; void f(float *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/CodeGen/only_non_affine_error_region.ll b/polly/test/CodeGen/only_non_affine_error_region.ll index be7a8a23df869..445cef0d6f697 100644 --- a/polly/test/CodeGen/only_non_affine_error_region.ll +++ b/polly/test/CodeGen/only_non_affine_error_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; CHECK-NOT: polly.start ; diff --git a/polly/test/CodeGen/openmp_limit_threads.ll b/polly/test/CodeGen/openmp_limit_threads.ll index 730c57299d569..4c33be3407251 100644 --- a/polly/test/CodeGen/openmp_limit_threads.ll +++ b/polly/test/CodeGen/openmp_limit_threads.ll @@ -1,10 +1,10 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -S < %s | FileCheck %s --check-prefix=AUTO -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -polly-num-threads=1 -S < %s | FileCheck %s --check-prefix=ONE -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -polly-num-threads=4 -S < %s | FileCheck %s --check-prefix=FOUR +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -S < %s | FileCheck %s --check-prefix=AUTO +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -polly-num-threads=1 -S < %s | FileCheck %s --check-prefix=ONE +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -polly-num-threads=4 -S < %s | FileCheck %s --check-prefix=FOUR -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -polly-omp-backend=LLVM -S < %s | FileCheck %s --check-prefix=LIBOMP-AUTO -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -polly-omp-backend=LLVM -polly-num-threads=1 -S < %s | FileCheck %s --check-prefix=LIBOMP-ONE -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -polly-omp-backend=LLVM -polly-num-threads=4 -S < %s | FileCheck %s --check-prefix=LIBOMP-FOUR +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -polly-omp-backend=LLVM -S < %s | FileCheck %s --check-prefix=LIBOMP-AUTO +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -polly-omp-backend=LLVM -polly-num-threads=1 -S < %s | FileCheck %s --check-prefix=LIBOMP-ONE +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -polly-omp-backend=LLVM -polly-num-threads=4 -S < %s | FileCheck %s --check-prefix=LIBOMP-FOUR ; Ensure that the provided thread numbers are forwarded to the OpenMP calls. ; diff --git a/polly/test/CodeGen/out-of-scop-phi-node-use.ll b/polly/test/CodeGen/out-of-scop-phi-node-use.ll index 8d5f74751af49..dd0a24b14a3b8 100644 --- a/polly/test/CodeGen/out-of-scop-phi-node-use.ll +++ b/polly/test/CodeGen/out-of-scop-phi-node-use.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/CodeGen/param_div_div_div_2.ll b/polly/test/CodeGen/param_div_div_div_2.ll index 3ae95020d52dd..8eba6444abb16 100644 --- a/polly/test/CodeGen/param_div_div_div_2.ll +++ b/polly/test/CodeGen/param_div_div_div_2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s --check-prefix=IR ; ; Check that we guard the divisions because we moved them and thereby increased ; their domain. diff --git a/polly/test/CodeGen/partial_write_array.ll b/polly/test/CodeGen/partial_write_array.ll index fe5fd8cffece7..fad4b21cf3dc8 100644 --- a/polly/test/CodeGen/partial_write_array.ll +++ b/polly/test/CodeGen/partial_write_array.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; Partial write of an array access. ; diff --git a/polly/test/CodeGen/partial_write_emptyset.ll b/polly/test/CodeGen/partial_write_emptyset.ll index d0e5615e4220d..67828808e2fac 100644 --- a/polly/test/CodeGen/partial_write_emptyset.ll +++ b/polly/test/CodeGen/partial_write_emptyset.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; Partial write, where "partial" is the empty set. ; The store is never executed in this case and we do generate it in the diff --git a/polly/test/CodeGen/partial_write_full_write_that_appears_partial.ll b/polly/test/CodeGen/partial_write_full_write_that_appears_partial.ll index a36414297485a..b26bd81b5663b 100644 --- a/polly/test/CodeGen/partial_write_full_write_that_appears_partial.ll +++ b/polly/test/CodeGen/partial_write_full_write_that_appears_partial.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; CHECK: polly.stmt.if.then81: ; preds = %polly.stmt.if.end75 ; CHECK-NEXT: store float undef, ptr %fX64, align 4, !alias.scope !0, !noalias !3 diff --git a/polly/test/CodeGen/partial_write_impossible_restriction.ll b/polly/test/CodeGen/partial_write_impossible_restriction.ll index e0069ebc8eae8..7577b137a2750 100644 --- a/polly/test/CodeGen/partial_write_impossible_restriction.ll +++ b/polly/test/CodeGen/partial_write_impossible_restriction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; The isl scheduler isolates %cond.false into two instances. ; A partial write access in one of the instances was never executed, diff --git a/polly/test/CodeGen/partial_write_in_region.ll b/polly/test/CodeGen/partial_write_in_region.ll index e7f4225cf9310..7c138c82091e5 100644 --- a/polly/test/CodeGen/partial_write_in_region.ll +++ b/polly/test/CodeGen/partial_write_in_region.ll @@ -1,4 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -verify-dom-info -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-import-jscop-postfix=transformed \ +; RUN: -verify-dom-info \ +; RUN: -S < %s | FileCheck %s ; ; void foo(long A[], float B[], float C[]) { ; for (long i = 0; i < 1024; i++) { diff --git a/polly/test/CodeGen/partial_write_in_region_with_loop.ll b/polly/test/CodeGen/partial_write_in_region_with_loop.ll index 85b56fefad809..ba15a7871f431 100644 --- a/polly/test/CodeGen/partial_write_in_region_with_loop.ll +++ b/polly/test/CodeGen/partial_write_in_region_with_loop.ll @@ -1,4 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -verify-dom-info -polly-allow-nonaffine-loops -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ +; RUN: -polly-import-jscop-postfix=transformed \ +; RUN: -verify-dom-info -polly-allow-nonaffine-loops \ +; RUN: -S < %s | FileCheck %s ; This test verifies that partial writes within non-affine loops are code ; generated correctly. diff --git a/polly/test/CodeGen/partial_write_mapped_scalar.ll b/polly/test/CodeGen/partial_write_mapped_scalar.ll index bb99d4ea086d2..b8c413885cdb0 100644 --- a/polly/test/CodeGen/partial_write_mapped_scalar.ll +++ b/polly/test/CodeGen/partial_write_mapped_scalar.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; Partial write of a (mapped) scalar. ; diff --git a/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll b/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll index 37a9d98c6a22e..8c1953a05ad3c 100644 --- a/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll +++ b/polly/test/CodeGen/partial_write_mapped_scalar_subregion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; Partial write of a (mapped) scalar in a non-affine subregion. ; diff --git a/polly/test/CodeGen/perf_monitoring.ll b/polly/test/CodeGen/perf_monitoring.ll index 61f122228c377..4b91e5055c0b1 100644 --- a/polly/test/CodeGen/perf_monitoring.ll +++ b/polly/test/CodeGen/perf_monitoring.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-codegen-perf-monitoring -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-perf-monitoring \ +; RUN: -S < %s | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll b/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll index 4c47a12c12904..d5c33d64f3418 100644 --- a/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll +++ b/polly/test/CodeGen/perf_monitoring_cycles_per_scop.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-codegen-perf-monitoring -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-perf-monitoring \ +; RUN: -S < %s | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll b/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll index 6d09d8bf27ebe..ab99c4d2de062 100644 --- a/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll +++ b/polly/test/CodeGen/perf_monitoring_trip_counts_per_scop.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-codegen-perf-monitoring -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-perf-monitoring \ +; RUN: -S < %s | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/phi-defined-before-scop.ll b/polly/test/CodeGen/phi-defined-before-scop.ll index 2ccd7965bbeaf..447a14e9999c2 100644 --- a/polly/test/CodeGen/phi-defined-before-scop.ll +++ b/polly/test/CodeGen/phi-defined-before-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; CHECK-LABEL: polly.merge_new_and_old: ; CHECK-NEXT: %tmp7.ph.merge = phi ptr [ %tmp7.ph.final_reload, %polly.exiting ], [ %tmp7.ph, %bb6.region_exiting ] diff --git a/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll b/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll index 1655104b08390..e096aa2f4f8c0 100644 --- a/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll +++ b/polly/test/CodeGen/phi_after_error_block_outside_of_scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; Make sure code generation does not break in case an 'error block' is detected ; outside of the scope. In this situation, we should not affect code generation. diff --git a/polly/test/CodeGen/phi_condition_modeling_1.ll b/polly/test/CodeGen/phi_condition_modeling_1.ll index 1cadac0a5cf73..9d73d8a792558 100644 --- a/polly/test/CodeGen/phi_condition_modeling_1.ll +++ b/polly/test/CodeGen/phi_condition_modeling_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; void f(int *A, int c, int N) { ; int tmp; diff --git a/polly/test/CodeGen/phi_condition_modeling_2.ll b/polly/test/CodeGen/phi_condition_modeling_2.ll index 8f2e2a517c96c..2d1364842d735 100644 --- a/polly/test/CodeGen/phi_condition_modeling_2.ll +++ b/polly/test/CodeGen/phi_condition_modeling_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; void f(int *A, int c, int N) { ; int tmp; diff --git a/polly/test/CodeGen/phi_conditional_simple_1.ll b/polly/test/CodeGen/phi_conditional_simple_1.ll index 5f0f8de19f223..25bcf2a118ef4 100644 --- a/polly/test/CodeGen/phi_conditional_simple_1.ll +++ b/polly/test/CodeGen/phi_conditional_simple_1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; void jd(int *A, int c) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll index 703e55f15c084..43d29b9ec8649 100644 --- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll +++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused an lnt crash at some point, just verify it will run through. ; diff --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll index 3d911e0d6a87f..9f28024fcfa0a 100644 --- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll +++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused an lnt crash at some point, just verify it will run through and ; produce the PHI node in the exit we are looking for. diff --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll index 5f81f52078723..73e99ac0f32c5 100644 --- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll +++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused an lnt crash at some point, just verify it will run through and ; produce the PHI node in the exit we are looking for. diff --git a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll index abb86e650ce2a..6c9bd56a98722 100644 --- a/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll +++ b/polly/test/CodeGen/phi_in_exit_early_lnt_failure_5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; This caused an lnt crash at some point, just verify it will run through and ; produce the PHI node in the exit we are looking for. diff --git a/polly/test/CodeGen/phi_loop_carried_float.ll b/polly/test/CodeGen/phi_loop_carried_float.ll index 47a8a8190c8d9..4cb392d3353d3 100644 --- a/polly/test/CodeGen/phi_loop_carried_float.ll +++ b/polly/test/CodeGen/phi_loop_carried_float.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; float f(float *A, int N) { ; float tmp = 0; diff --git a/polly/test/CodeGen/phi_loop_carried_float_escape.ll b/polly/test/CodeGen/phi_loop_carried_float_escape.ll index 81dd5cecd1878..9fd8ad413128a 100644 --- a/polly/test/CodeGen/phi_loop_carried_float_escape.ll +++ b/polly/test/CodeGen/phi_loop_carried_float_escape.ll @@ -1,6 +1,8 @@ -; RUN: opt %loadNPMPolly -S -polly-analyze-read-only-scalars=false '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S \ +; RUN: -polly-analyze-read-only-scalars=false -passes=polly-codegen < %s | FileCheck %s -; RUN: opt %loadNPMPolly -S -polly-analyze-read-only-scalars=true '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S \ +; RUN: -polly-analyze-read-only-scalars=true -passes=polly-codegen < %s | FileCheck %s ; ; float f(float *A, int N) { ; float tmp = 0; diff --git a/polly/test/CodeGen/phi_scalar_simple_1.ll b/polly/test/CodeGen/phi_scalar_simple_1.ll index 6331c24da31b0..80a1c41b83ac0 100644 --- a/polly/test/CodeGen/phi_scalar_simple_1.ll +++ b/polly/test/CodeGen/phi_scalar_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; int jd(int *restrict A, int x, int N) { ; for (int i = 1; i < N; i++) diff --git a/polly/test/CodeGen/phi_scalar_simple_2.ll b/polly/test/CodeGen/phi_scalar_simple_2.ll index 0adadf6b90159..614c8acfb9f8e 100644 --- a/polly/test/CodeGen/phi_scalar_simple_2.ll +++ b/polly/test/CodeGen/phi_scalar_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; int jd(int *restrict A, int x, int N, int c) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll b/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll index 4d6ede638c8f2..7e21666f1db00 100644 --- a/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll +++ b/polly/test/CodeGen/phi_with_multi_exiting_edges_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; CHECK: polly.merge_new_and_old: ; CHECK: %result.ph.merge = phi float [ %result.ph.final_reload, %polly.exiting ], [ %result.ph, %next.region_exiting ] diff --git a/polly/test/CodeGen/phi_with_one_exit_edge.ll b/polly/test/CodeGen/phi_with_one_exit_edge.ll index 4de24fb058c26..36a8684dbc37a 100644 --- a/polly/test/CodeGen/phi_with_one_exit_edge.ll +++ b/polly/test/CodeGen/phi_with_one_exit_edge.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; ; CHECK: polly.merge_new_and_old: diff --git a/polly/test/CodeGen/pointer-type-expressions-2.ll b/polly/test/CodeGen/pointer-type-expressions-2.ll index 706b01d7f8ca5..918e4c6c9c0b0 100644 --- a/polly/test/CodeGen/pointer-type-expressions-2.ll +++ b/polly/test/CodeGen/pointer-type-expressions-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define void @foo(ptr %start, ptr %end) { diff --git a/polly/test/CodeGen/pointer-type-expressions.ll b/polly/test/CodeGen/pointer-type-expressions.ll index 2478e2238fd0e..e7feebc163d4b 100644 --- a/polly/test/CodeGen/pointer-type-expressions.ll +++ b/polly/test/CodeGen/pointer-type-expressions.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN ; void f(int a[], int N, float *P) { ; int i; diff --git a/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll b/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll index cac6f4fdd16f1..9ee050a1e5070 100644 --- a/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll +++ b/polly/test/CodeGen/pointer-type-pointer-type-comparison.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN ; ; void f(int a[], int N, float *P, float *Q) { diff --git a/polly/test/CodeGen/pointer_rem.ll b/polly/test/CodeGen/pointer_rem.ll index ca5d866ae6cce..b8202318a3eca 100644 --- a/polly/test/CodeGen/pointer_rem.ll +++ b/polly/test/CodeGen/pointer_rem.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -polly-print-ast -disable-output -S < %s | FileCheck %s --check-prefix=AST -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print,scop(print)' -disable-output -S < %s | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print,scop(polly-codegen)' -S < %s | FileCheck %s --check-prefix=CODEGEN target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128" target triple = "aarch64--linux-gnu" diff --git a/polly/test/CodeGen/pr25241.ll b/polly/test/CodeGen/pr25241.ll index 94be6d7824921..7547b0bbed749 100644 --- a/polly/test/CodeGen/pr25241.ll +++ b/polly/test/CodeGen/pr25241.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; PR25241 (https://llvm.org/bugs/show_bug.cgi?id=25241) ; Ensure that synthesized values of a PHI node argument are generated in the diff --git a/polly/test/CodeGen/ptrtoint_as_parameter.ll b/polly/test/CodeGen/ptrtoint_as_parameter.ll index 49a8c38309eb2..a551d810c0802 100644 --- a/polly/test/CodeGen/ptrtoint_as_parameter.ll +++ b/polly/test/CodeGen/ptrtoint_as_parameter.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; CHECK: if.then260: ; CHECK-NEXT: %p.4 = getelementptr inbounds i8, ptr null, i64 1 diff --git a/polly/test/CodeGen/read-only-scalars.ll b/polly/test/CodeGen/read-only-scalars.ll index 2ae0f9e797bd1..365cbbce495fb 100644 --- a/polly/test/CodeGen/read-only-scalars.ll +++ b/polly/test/CodeGen/read-only-scalars.ll @@ -1,5 +1,9 @@ -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=false '-passes=polly' -S < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=true '-passes=polly' -S < %s | FileCheck %s -check-prefix=SCALAR +; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=false -passes=polly-codegen \ +; RUN: \ +; RUN: -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=true -passes=polly-codegen \ +; RUN: \ +; RUN: -S < %s | FileCheck %s -check-prefix=SCALAR ; CHECK-NOT: alloca diff --git a/polly/test/CodeGen/reduction.ll b/polly/test/CodeGen/reduction.ll index 21d8c0f98b702..8c5f70770a1c5 100644 --- a/polly/test/CodeGen/reduction.ll +++ b/polly/test/CodeGen/reduction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s 2>&1 | not FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s 2>&1 | not FileCheck %s ;#include ;#include diff --git a/polly/test/CodeGen/reduction_2.ll b/polly/test/CodeGen/reduction_2.ll index f9576826b4f77..060a1866870e4 100644 --- a/polly/test/CodeGen/reduction_2.ll +++ b/polly/test/CodeGen/reduction_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --allow-empty +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s | FileCheck %s --allow-empty ;#include ;#include diff --git a/polly/test/CodeGen/reduction_simple_binary.ll b/polly/test/CodeGen/reduction_simple_binary.ll index 53cbdf407c954..0fe1085dbbacd 100644 --- a/polly/test/CodeGen/reduction_simple_binary.ll +++ b/polly/test/CodeGen/reduction_simple_binary.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: pragma simd reduction ; diff --git a/polly/test/CodeGen/reggen_domtree_crash.ll b/polly/test/CodeGen/reggen_domtree_crash.ll index 9d5ba4c4ff9fb..58c27091a22c3 100644 --- a/polly/test/CodeGen/reggen_domtree_crash.ll +++ b/polly/test/CodeGen/reggen_domtree_crash.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-parallel -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-parallel -S < %s | FileCheck %s ; CHECK: define ptr @ham(ptr %arg, i64 %arg1, i1 %arg2) diff --git a/polly/test/CodeGen/region-with-instructions.ll b/polly/test/CodeGen/region-with-instructions.ll index f061ac061e226..e5f7d0f9ef5d6 100644 --- a/polly/test/CodeGen/region-with-instructions.ll +++ b/polly/test/CodeGen/region-with-instructions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; CHECK-LABEL: polly.stmt.bb48: ; CHECK-NEXT: %[[offset:.*]] = shl i64 %polly.indvar, 3 diff --git a/polly/test/CodeGen/region_exiting-domtree.ll b/polly/test/CodeGen/region_exiting-domtree.ll index 16b265c064790..06e0d9df3d951 100644 --- a/polly/test/CodeGen/region_exiting-domtree.ll +++ b/polly/test/CodeGen/region_exiting-domtree.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -verify-dom-info -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-dom-info -disable-output < %s ; Verify that the DominatorTree is preserved correctly for the inserted ; %polly.stmt.exit.exit block, which serves as new exit block for the generated diff --git a/polly/test/CodeGen/region_multiexit_partialwrite.ll b/polly/test/CodeGen/region_multiexit_partialwrite.ll index 9d21d16c9f9cd..39e04dbf93ac7 100644 --- a/polly/test/CodeGen/region_multiexit_partialwrite.ll +++ b/polly/test/CodeGen/region_multiexit_partialwrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s ; ; This text case has a partial write of PHI in a region-statement. It ; requires that the new PHINode from the region's exiting block is diff --git a/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll b/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll index 7984b7ce80209..4afaab5bbad0a 100644 --- a/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll +++ b/polly/test/CodeGen/run-time-condition-with-scev-parameters.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; TODO: FIXME: Simplify the context. ; AST: if (n >= 1 && 0 == n <= -1) diff --git a/polly/test/CodeGen/run-time-condition.ll b/polly/test/CodeGen/run-time-condition.ll index 44d2a4f15b378..914b76f5e0be7 100644 --- a/polly/test/CodeGen/run-time-condition.ll +++ b/polly/test/CodeGen/run-time-condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -S < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" diff --git a/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll b/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll index 102ef04128133..77306c1046133 100644 --- a/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll +++ b/polly/test/CodeGen/scalar-references-used-in-scop-compute.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; Test the code generation in the presence of a scalar out-of-scop value being ; used from within the SCoP. diff --git a/polly/test/CodeGen/scalar-store-from-same-bb.ll b/polly/test/CodeGen/scalar-store-from-same-bb.ll index 1988f77086c8a..0c1164b245a43 100644 --- a/polly/test/CodeGen/scalar-store-from-same-bb.ll +++ b/polly/test/CodeGen/scalar-store-from-same-bb.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -passes=polly-codegen -S < %s | FileCheck %s ; This test ensures that the expression N + 1 that is stored in the phi-node ; alloca, is directly computed and not incorrectly transferred through memory. diff --git a/polly/test/CodeGen/scalar_codegen_crash.ll b/polly/test/CodeGen/scalar_codegen_crash.ll index 0179072391a33..375f097283b07 100644 --- a/polly/test/CodeGen/scalar_codegen_crash.ll +++ b/polly/test/CodeGen/scalar_codegen_crash.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -passes=polly-codegen -S < %s | FileCheck %s ; This test cases used to crash the scalar code generation. Check that we ; can generate code for it. diff --git a/polly/test/CodeGen/scev-backedgetaken.ll b/polly/test/CodeGen/scev-backedgetaken.ll index 09fcfe3e4a09c..e0941690ae489 100644 --- a/polly/test/CodeGen/scev-backedgetaken.ll +++ b/polly/test/CodeGen/scev-backedgetaken.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; llvm.org/PR48422 ; Use of ScalarEvolution in Codegen not possible because DominatorTree is not updated. diff --git a/polly/test/CodeGen/scev-division-invariant-load.ll b/polly/test/CodeGen/scev-division-invariant-load.ll index 5942ecbe7cee9..70f090eae07b3 100644 --- a/polly/test/CodeGen/scev-division-invariant-load.ll +++ b/polly/test/CodeGen/scev-division-invariant-load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s ; ; Check that we generate valid code as we did not use the preloaded ; value of %tmp1 for the access function of the preloaded %tmp4. diff --git a/polly/test/CodeGen/scev.ll b/polly/test/CodeGen/scev.ll index a09d8c5504b1b..e2b5afda1bfff 100644 --- a/polly/test/CodeGen/scev.ll +++ b/polly/test/CodeGen/scev.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect < %s +; RUN: opt %loadNPMPolly '-passes=print' < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define fastcc void @f () inlinehint align 2 { diff --git a/polly/test/CodeGen/scev_expansion_in_nonaffine.ll b/polly/test/CodeGen/scev_expansion_in_nonaffine.ll index 095c362024a83..0adb0ba7eea81 100644 --- a/polly/test/CodeGen/scev_expansion_in_nonaffine.ll +++ b/polly/test/CodeGen/scev_expansion_in_nonaffine.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; bugpoint-reduced testcase of MiBench/consumer-lame/quantize-pvt.c from the ; test-suite. diff --git a/polly/test/CodeGen/scev_looking_through_bitcasts.ll b/polly/test/CodeGen/scev_looking_through_bitcasts.ll index 81f4b96d22a37..142e83f820fe7 100644 --- a/polly/test/CodeGen/scev_looking_through_bitcasts.ll +++ b/polly/test/CodeGen/scev_looking_through_bitcasts.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Scalar write of bitcasted value. Instead of writing %b of type ; %structty, the SCEV expression looks through the bitcast such that diff --git a/polly/test/CodeGen/scop_expander_insert_point.ll b/polly/test/CodeGen/scop_expander_insert_point.ll index 1cba7567a5e43..fd73132258ddc 100644 --- a/polly/test/CodeGen/scop_expander_insert_point.ll +++ b/polly/test/CodeGen/scop_expander_insert_point.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s ; ; CHECK: entry: ; CHECK-NEXT: %outvalue.141.phiops = alloca i64 diff --git a/polly/test/CodeGen/scop_expander_segfault.ll b/polly/test/CodeGen/scop_expander_segfault.ll index 56d37a0175853..d94a1fdfb2c12 100644 --- a/polly/test/CodeGen/scop_expander_segfault.ll +++ b/polly/test/CodeGen/scop_expander_segfault.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S %s | FileCheck %s ; ; This test was extracted from gcc in SPEC2006 and it crashed our code ; generation, or to be more precise, the ScopExpander due to a endless diff --git a/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll b/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll index cdcfe838fa915..9f968e5657c90 100644 --- a/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll +++ b/polly/test/CodeGen/scop_never_executed_runtime_check_location.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; Verify that we generate the runtime check code after the conditional branch ; in the SCoP region entering block (here %entry). diff --git a/polly/test/CodeGen/select-base-pointer.ll b/polly/test/CodeGen/select-base-pointer.ll index 144c05b5effba..85be37755c474 100644 --- a/polly/test/CodeGen/select-base-pointer.ll +++ b/polly/test/CodeGen/select-base-pointer.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=polly' -disable-output %s +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa -passes=polly-codegen -disable-output %s ; ; Check that we do not crash here. ; diff --git a/polly/test/CodeGen/sequential_loops.ll b/polly/test/CodeGen/sequential_loops.ll index eeb3048007859..33a3ee9fbbd47 100644 --- a/polly/test/CodeGen/sequential_loops.ll +++ b/polly/test/CodeGen/sequential_loops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#include ;#define N 1024 diff --git a/polly/test/CodeGen/simple_loop_non_single_exit.ll b/polly/test/CodeGen/simple_loop_non_single_exit.ll index 1b3518bdb0cba..a7e36bc4c7330 100644 --- a/polly/test/CodeGen/simple_loop_non_single_exit.ll +++ b/polly/test/CodeGen/simple_loop_non_single_exit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CHECK-CODE +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CHECK-CODE ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/simple_loop_non_single_exit_2.ll b/polly/test/CodeGen/simple_loop_non_single_exit_2.ll index 3af9913e6aa04..22e9da09ef857 100644 --- a/polly/test/CodeGen/simple_loop_non_single_exit_2.ll +++ b/polly/test/CodeGen/simple_loop_non_single_exit_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CHECK-CODE +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CHECK-CODE ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/simple_non_single_entry.ll b/polly/test/CodeGen/simple_non_single_entry.ll index 8800dc7214b06..c33a77ae07939 100644 --- a/polly/test/CodeGen/simple_non_single_entry.ll +++ b/polly/test/CodeGen/simple_non_single_entry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CHECK-CODE +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CHECK-CODE ; void f(long A[], long N) { ; long i; diff --git a/polly/test/CodeGen/simple_nonaffine_loop.ll b/polly/test/CodeGen/simple_nonaffine_loop.ll index 5b1cd1991cd73..bc62047a80a34 100644 --- a/polly/test/CodeGen/simple_nonaffine_loop.ll +++ b/polly/test/CodeGen/simple_nonaffine_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-allow-nonaffine -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-allow-nonaffine -disable-output < %s | FileCheck %s ;#include ;#include diff --git a/polly/test/CodeGen/single_do_loop_int_max_iterations.ll b/polly/test/CodeGen/single_do_loop_int_max_iterations.ll index f0142f726efa4..a65e3a25f035a 100644 --- a/polly/test/CodeGen/single_do_loop_int_max_iterations.ll +++ b/polly/test/CodeGen/single_do_loop_int_max_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#define N 20 ;#include "limits.h" diff --git a/polly/test/CodeGen/single_do_loop_int_param_iterations.ll b/polly/test/CodeGen/single_do_loop_int_param_iterations.ll index cc5e7b221026c..acccb48f18a3c 100644 --- a/polly/test/CodeGen/single_do_loop_int_param_iterations.ll +++ b/polly/test/CodeGen/single_do_loop_int_param_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; XFAIL: * ;define N 20 diff --git a/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll b/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll index 1299362369478..7a67f6ba96ce2 100644 --- a/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll +++ b/polly/test/CodeGen/single_do_loop_ll_max_iterations.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s ;#define N 20 ;#include "limits.h" diff --git a/polly/test/CodeGen/single_do_loop_one_iteration.ll b/polly/test/CodeGen/single_do_loop_one_iteration.ll index d025ef2116a40..2d939167b71ee 100644 --- a/polly/test/CodeGen/single_do_loop_one_iteration.ll +++ b/polly/test/CodeGen/single_do_loop_one_iteration.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; XFAIL: * ;#define N 20 diff --git a/polly/test/CodeGen/single_do_loop_scev_replace.ll b/polly/test/CodeGen/single_do_loop_scev_replace.ll index b473e266343a3..83c9e9d0324ce 100644 --- a/polly/test/CodeGen/single_do_loop_scev_replace.ll +++ b/polly/test/CodeGen/single_do_loop_scev_replace.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#define N 20 ;#include "limits.h" diff --git a/polly/test/CodeGen/single_loop.ll b/polly/test/CodeGen/single_loop.ll index c04738e6843a0..2db34663e93ce 100644 --- a/polly/test/CodeGen/single_loop.ll +++ b/polly/test/CodeGen/single_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#include ;#define N 1024 diff --git a/polly/test/CodeGen/single_loop_int_max_iterations.ll b/polly/test/CodeGen/single_loop_int_max_iterations.ll index 82ec7ffd85462..f83e8823c63df 100644 --- a/polly/test/CodeGen/single_loop_int_max_iterations.ll +++ b/polly/test/CodeGen/single_loop_int_max_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#define N 20 ;#include "limits.h" diff --git a/polly/test/CodeGen/single_loop_ll_max_iterations.ll b/polly/test/CodeGen/single_loop_ll_max_iterations.ll index 8affb71fad649..1427189d74a7d 100644 --- a/polly/test/CodeGen/single_loop_ll_max_iterations.ll +++ b/polly/test/CodeGen/single_loop_ll_max_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#include "limits.h" ;#define N 20 diff --git a/polly/test/CodeGen/single_loop_one_iteration.ll b/polly/test/CodeGen/single_loop_one_iteration.ll index 307b8358ff980..1a70d4a879d83 100644 --- a/polly/test/CodeGen/single_loop_one_iteration.ll +++ b/polly/test/CodeGen/single_loop_one_iteration.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ;#define N 20 ; diff --git a/polly/test/CodeGen/single_loop_param.ll b/polly/test/CodeGen/single_loop_param.ll index 1d78c7a7329d4..44ce1236e9f84 100644 --- a/polly/test/CodeGen/single_loop_param.ll +++ b/polly/test/CodeGen/single_loop_param.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @A = common global [1024 x i32] zeroinitializer, align 16 ; [#uses=3] diff --git a/polly/test/CodeGen/single_loop_param_less_equal.ll b/polly/test/CodeGen/single_loop_param_less_equal.ll index 5fad1d43ae0d7..fda9bfab11b8f 100644 --- a/polly/test/CodeGen/single_loop_param_less_equal.ll +++ b/polly/test/CodeGen/single_loop_param_less_equal.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN -; RUN: opt %loadNPMPolly '-passes=polly' < %s | opt -passes='print' -disable-output 2>&1 | FileCheck %s -check-prefix=LOOPS +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly -passes=polly-codegen < %s | opt -passes='print' -disable-output 2>&1 | FileCheck %s -check-prefix=LOOPS target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @A = common global [1024 x i32] zeroinitializer diff --git a/polly/test/CodeGen/single_loop_param_less_than.ll b/polly/test/CodeGen/single_loop_param_less_than.ll index 75a8cb2094a16..b888c860eacd0 100644 --- a/polly/test/CodeGen/single_loop_param_less_than.ll +++ b/polly/test/CodeGen/single_loop_param_less_than.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @A = common global [1024 x i32] zeroinitializer diff --git a/polly/test/CodeGen/single_loop_zero_iterations.ll b/polly/test/CodeGen/single_loop_zero_iterations.ll index 3194dba52190b..b1ce491b5c8a2 100644 --- a/polly/test/CodeGen/single_loop_zero_iterations.ll +++ b/polly/test/CodeGen/single_loop_zero_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=SCALAR --allow-empty +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=SCALAR --allow-empty ;#define N 20 ; diff --git a/polly/test/CodeGen/split_edge_of_exit.ll b/polly/test/CodeGen/split_edge_of_exit.ll index 73d6006a6b621..f4b17e687ada6 100644 --- a/polly/test/CodeGen/split_edge_of_exit.ll +++ b/polly/test/CodeGen/split_edge_of_exit.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -verify-region-info -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-region-info -disable-output < %s ; ; This is a scop directly precedented by a region, i.e. the scop's entry is the ; region's exit block. This test is to ensure that the RegionInfo is correctly diff --git a/polly/test/CodeGen/split_edges.ll b/polly/test/CodeGen/split_edges.ll index 03363f49ce800..b921202285bb2 100644 --- a/polly/test/CodeGen/split_edges.ll +++ b/polly/test/CodeGen/split_edges.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -verify-region-info -verify-dom-info -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-region-info -verify-dom-info -S < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @A = common global [1536 x float] zeroinitializer diff --git a/polly/test/CodeGen/split_edges_2.ll b/polly/test/CodeGen/split_edges_2.ll index 59df1618cfd71..8f4d48f5dcb00 100644 --- a/polly/test/CodeGen/split_edges_2.ll +++ b/polly/test/CodeGen/split_edges_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -verify-region-info -verify-dom-info -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -verify-region-info -verify-dom-info -S < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/CodeGen/srem-in-other-bb.ll b/polly/test/CodeGen/srem-in-other-bb.ll index 177d86adb9066..a13a1b6ab98f2 100644 --- a/polly/test/CodeGen/srem-in-other-bb.ll +++ b/polly/test/CodeGen/srem-in-other-bb.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: < %s | FileCheck %s ; ; void pos(float *A, long n) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll b/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll index 5a490b68b9a9f..b49c4e12fe11a 100644 --- a/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll +++ b/polly/test/CodeGen/stack-overflow-in-load-hoisting.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -verify-dom-info '-passes=polly' -S -polly-invariant-load-hoisting=true < %s | FileCheck %s +; RUN: opt %loadNPMPolly -verify-dom-info -passes=polly-codegen -S < %s \ +; RUN: -polly-invariant-load-hoisting=true | FileCheck %s ; ; This caused an infinite recursion during invariant load hoisting at some ; point. Check it does not and we add a "false" runtime check. diff --git a/polly/test/CodeGen/stmt_split_no_dependence.ll b/polly/test/CodeGen/stmt_split_no_dependence.ll index d41e4a87bfb65..bb878cc342af8 100644 --- a/polly/test/CodeGen/stmt_split_no_dependence.ll +++ b/polly/test/CodeGen/stmt_split_no_dependence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; CHECK: store i32 %9, ptr %scevgep, align 4, !alias.scope !3, !noalias !6 ; CHECK: store i32 %11, ptr %scevgep4, align 4, !alias.scope !6, !noalias !3 diff --git a/polly/test/CodeGen/switch-in-non-affine-region.ll b/polly/test/CodeGen/switch-in-non-affine-region.ll index 6696efca63f02..1a9e7081bebdc 100644 --- a/polly/test/CodeGen/switch-in-non-affine-region.ll +++ b/polly/test/CodeGen/switch-in-non-affine-region.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -S -passes=polly-codegen < %s | FileCheck %s ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/CodeGen/synthesizable_phi_write_after_loop.ll b/polly/test/CodeGen/synthesizable_phi_write_after_loop.ll index 86395f25db1a8..b2a062363eef4 100644 --- a/polly/test/CodeGen/synthesizable_phi_write_after_loop.ll +++ b/polly/test/CodeGen/synthesizable_phi_write_after_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Check for the correct written value of a scalar phi write whose value is ; defined within the loop, but its effective value is its last definition when diff --git a/polly/test/CodeGen/test-invalid-operands-for-select-2.ll b/polly/test/CodeGen/test-invalid-operands-for-select-2.ll index b5172badd76dc..5668063c27c8e 100644 --- a/polly/test/CodeGen/test-invalid-operands-for-select-2.ll +++ b/polly/test/CodeGen/test-invalid-operands-for-select-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' -verify-loop-info < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen -verify-loop-info < %s | FileCheck %s ; ; Check that we do not crash as described here: http://llvm.org/bugs/show_bug.cgi?id=21167 ; diff --git a/polly/test/CodeGen/test-invalid-operands-for-select.ll b/polly/test/CodeGen/test-invalid-operands-for-select.ll index 39cadc78f7e36..fdc98fbb4d9e7 100644 --- a/polly/test/CodeGen/test-invalid-operands-for-select.ll +++ b/polly/test/CodeGen/test-invalid-operands-for-select.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; Check that we do not crash as described here: http://llvm.org/PR21167 ; diff --git a/polly/test/CodeGen/test.ll b/polly/test/CodeGen/test.ll index 7c28ca4860e79..aad998ba2728b 100644 --- a/polly/test/CodeGen/test.ll +++ b/polly/test/CodeGen/test.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; XFAIL: * ;int bar1(); diff --git a/polly/test/CodeGen/two-loops-right-after-each-other-2.ll b/polly/test/CodeGen/two-loops-right-after-each-other-2.ll index d97a632fc382e..1c68389eaeba8 100644 --- a/polly/test/CodeGen/two-loops-right-after-each-other-2.ll +++ b/polly/test/CodeGen/two-loops-right-after-each-other-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; CHECK: polly.merge_new_and_old: ; CHECK-NEXT: merge = phi diff --git a/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll b/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll index 845d106d43b0e..4396c38310dce 100644 --- a/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll +++ b/polly/test/CodeGen/two-scops-in-row-invalidate-scevs.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; CHECK-LABEL: for.cond: ; CHECK: %num.0 = phi i32 [ %add, %for.body15 ], [ 0, %for.cond.pre_entry_bb ] diff --git a/polly/test/CodeGen/two-scops-in-row.ll b/polly/test/CodeGen/two-scops-in-row.ll index 4b9d49cb02ec6..dd3f310ef1502 100644 --- a/polly/test/CodeGen/two-scops-in-row.ll +++ b/polly/test/CodeGen/two-scops-in-row.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ignore-aliasing -disable-output < %s | FileCheck %s -check-prefix=SCALAR -; RUN: opt %loadNPMPolly '-passes=polly' -polly-ignore-aliasing -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ignore-aliasing -disable-output < %s | FileCheck %s -check-prefix=SCALAR +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-ignore-aliasing -disable-output < %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; SCALAR: if ( diff --git a/polly/test/CodeGen/udiv_expansion_position.ll b/polly/test/CodeGen/udiv_expansion_position.ll index 2a3ba8ae45757..354e3cd180107 100644 --- a/polly/test/CodeGen/udiv_expansion_position.ll +++ b/polly/test/CodeGen/udiv_expansion_position.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s ; ; Verify we do not crash when we synthezise code for the udiv in the SCoP. ; diff --git a/polly/test/CodeGen/uninitialized_scalar_memory.ll b/polly/test/CodeGen/uninitialized_scalar_memory.ll index ad0e6ca7e350b..e08af07e604e8 100644 --- a/polly/test/CodeGen/uninitialized_scalar_memory.ll +++ b/polly/test/CodeGen/uninitialized_scalar_memory.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s | FileCheck %s ; ; Verify we initialize the scalar locations reserved for the incoming phi ; values. diff --git a/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll b/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll index e7f4d601edab5..46706804a81b0 100644 --- a/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll +++ b/polly/test/CodeGen/unpredictable-loop-unsynthesizable.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly' -polly-invariant-load-hoisting=true -disable-output < %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -passes=polly-codegen \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s ; The loop for.body is a scop with invariant load hoisting, but does not ; terminate predictably for ScalarEvolution. The scalar %1 therefore is not diff --git a/polly/test/CodeGen/variant_load_empty_domain.ll b/polly/test/CodeGen/variant_load_empty_domain.ll index d1f4450d086e0..6f2d3dc582db3 100644 --- a/polly/test/CodeGen/variant_load_empty_domain.ll +++ b/polly/test/CodeGen/variant_load_empty_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s ; ; ; void f(int *A) { diff --git a/polly/test/CodeGen/whole-scop-non-affine-subregion.ll b/polly/test/CodeGen/whole-scop-non-affine-subregion.ll index 44f6dbcd34d1d..b342b1cb5aa27 100644 --- a/polly/test/CodeGen/whole-scop-non-affine-subregion.ll +++ b/polly/test/CodeGen/whole-scop-non-affine-subregion.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -passes=polly-codegen -S < %s | FileCheck %s ; CHECK: polly.start ; int /* pure */ g() diff --git a/polly/test/DeLICM/confused_order.ll b/polly/test/DeLICM/confused_order.ll index de340ef48d16e..0c19eb6aa605a 100644 --- a/polly/test/DeLICM/confused_order.ll +++ b/polly/test/DeLICM/confused_order.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s -check-prefix=REMARKS +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-delicm' -polly-import-jscop-postfix=transformed -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s -check-prefix=REMARKS ; ; ForwardOptree changes the SCoP and may already map some accesses. ; DeLICM must be prepared to encounter implicit reads diff --git a/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll b/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll index ba42692febab2..66d9ae889e657 100644 --- a/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll +++ b/polly/test/DeLICM/contradicting_assumed_context_and_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; The domain of bb14 contradicts the SCoP's assumptions. This leads to ; 'anything goes' inside the statement since it is never executed, diff --git a/polly/test/DeLICM/load-in-cond-inf-loop.ll b/polly/test/DeLICM/load-in-cond-inf-loop.ll index 19cc334f70054..a78a4691bb0d5 100644 --- a/polly/test/DeLICM/load-in-cond-inf-loop.ll +++ b/polly/test/DeLICM/load-in-cond-inf-loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; When %b is 0, %for.body13 is an infinite loop. In this case the loaded ; value %1 is not used anywhere. diff --git a/polly/test/DeLICM/map_memset_zero.ll b/polly/test/DeLICM/map_memset_zero.ll index cc4e0ab387d2a..9a8e5989fdad1 100644 --- a/polly/test/DeLICM/map_memset_zero.ll +++ b/polly/test/DeLICM/map_memset_zero.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck -match-full-lines %s ; ; Check that PHI mapping works even in presence of a memset whose' ; zero value is used. diff --git a/polly/test/DeLICM/nomap_alreadymapped.ll b/polly/test/DeLICM/nomap_alreadymapped.ll index 9e49300381b57..da5f4ec24a47e 100644 --- a/polly/test/DeLICM/nomap_alreadymapped.ll +++ b/polly/test/DeLICM/nomap_alreadymapped.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/nomap_escaping.ll b/polly/test/DeLICM/nomap_escaping.ll index 6460dbdb808fb..60955368fe59c 100644 --- a/polly/test/DeLICM/nomap_escaping.ll +++ b/polly/test/DeLICM/nomap_escaping.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/nomap_occupied.ll b/polly/test/DeLICM/nomap_occupied.ll index 72eea57b8fdf5..9ba8ce2641231 100644 --- a/polly/test/DeLICM/nomap_occupied.ll +++ b/polly/test/DeLICM/nomap_occupied.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/nomap_readonly.ll b/polly/test/DeLICM/nomap_readonly.ll index 67bac06f1505f..7a185d336bad3 100644 --- a/polly/test/DeLICM/nomap_readonly.ll +++ b/polly/test/DeLICM/nomap_readonly.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; fsomeval = 21.0 + 21.0; diff --git a/polly/test/DeLICM/nomap_spuriouswrite.ll b/polly/test/DeLICM/nomap_spuriouswrite.ll index f3fcb0ccd06e4..0ed7f6ee8e239 100644 --- a/polly/test/DeLICM/nomap_spuriouswrite.ll +++ b/polly/test/DeLICM/nomap_spuriouswrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/nomap_storagesize.ll b/polly/test/DeLICM/nomap_storagesize.ll index 0f2943a5b1417..bf851ac342d20 100644 --- a/polly/test/DeLICM/nomap_storagesize.ll +++ b/polly/test/DeLICM/nomap_storagesize.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(float *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/nomap_writewrite.ll b/polly/test/DeLICM/nomap_writewrite.ll index fc8459a34972c..9fcd52aad743c 100644 --- a/polly/test/DeLICM/nomap_writewrite.ll +++ b/polly/test/DeLICM/nomap_writewrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/outofquota-reverseDomain.ll b/polly/test/DeLICM/outofquota-reverseDomain.ll index d48665bdc29c1..1f7527c841208 100644 --- a/polly/test/DeLICM/outofquota-reverseDomain.ll +++ b/polly/test/DeLICM/outofquota-reverseDomain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-delicm-max-ops=1000000 '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-delicm-max-ops=1000000 '-passes=print' -disable-output < %s | FileCheck %s ; ; This causes an assertion to fail on out-of-quota after 1000000 operations. ; (The error was specific to -polly-delicm-max-ops=1000000 and changes diff --git a/polly/test/DeLICM/pass_existence.ll b/polly/test/DeLICM/pass_existence.ll index d784655db60f3..64302d9983261 100644 --- a/polly/test/DeLICM/pass_existence.ll +++ b/polly/test/DeLICM/pass_existence.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -disable-output < %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-delicm -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=scop(print)' -disable-output < %s | FileCheck %s ; ; Simple test for the existence of the DeLICM pass. ; diff --git a/polly/test/DeLICM/pr41656.ll b/polly/test/DeLICM/pr41656.ll index 82799e4fd1ab8..2a92503809a24 100644 --- a/polly/test/DeLICM/pr41656.ll +++ b/polly/test/DeLICM/pr41656.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-print-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,scop(print)' -disable-output < %s 2>&1 | FileCheck %s ; ; llvm.org/PR41656 ; diff --git a/polly/test/DeLICM/pr48783.ll b/polly/test/DeLICM/pr48783.ll index 10f8b64c3dd2f..deba8bfcc5daf 100644 --- a/polly/test/DeLICM/pr48783.ll +++ b/polly/test/DeLICM/pr48783.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-print-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,scop(print)' -disable-output < %s 2>&1 | FileCheck %s ; ; llvm.org/PR48783 ; diff --git a/polly/test/DeLICM/reduction.ll b/polly/test/DeLICM/reduction.ll index 5d6531f51d570..29b7a3617300b 100644 --- a/polly/test/DeLICM/reduction.ll +++ b/polly/test/DeLICM/reduction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-delicm-partial-writes=true '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-delicm-partial-writes=true '-passes=print' -disable-output < %s | FileCheck -match-full-lines %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_constant_selfconflict.ll b/polly/test/DeLICM/reduction_constant_selfconflict.ll index 223a429d76343..012e0a0794b2b 100644 --- a/polly/test/DeLICM/reduction_constant_selfconflict.ll +++ b/polly/test/DeLICM/reduction_constant_selfconflict.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-flatten-schedule -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate.ll b/polly/test/DeLICM/reduction_looprotate.ll index b8eefe5e57cf8..341cc091f7e18 100644 --- a/polly/test/DeLICM/reduction_looprotate.ll +++ b/polly/test/DeLICM/reduction_looprotate.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-flatten-schedule -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll b/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll index 627a4452c3f90..a58eabb4fbd82 100644 --- a/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll +++ b/polly/test/DeLICM/reduction_looprotate_alwaystaken.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; Verify that delicm can cope with never taken PHI incoming edges. ; The edge %body -> %body_phi is never taken, hence the access MemoryKind::PHI, diff --git a/polly/test/DeLICM/reduction_looprotate_gvnpre.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre.ll index 1d3a789f7ce07..5a81441cf0eea 100644 --- a/polly/test/DeLICM/reduction_looprotate_gvnpre.ll +++ b/polly/test/DeLICM/reduction_looprotate_gvnpre.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-partial-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck -check-prefix=PARTIAL %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-partial-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck -check-prefix=PARTIAL %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll index 37499cd73020f..d9c5268e631df 100644 --- a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll +++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Load (but not store) of A[j] hoisted, reduction only over some iterations. ; diff --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll index 79a700ff122e2..6a4223f5af655 100644 --- a/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll +++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_cond2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Load (but not store) of A[j] hoisted, reduction not written in all iterations. ; FIXME: %join is not mapped because the MemoryKind::Value mapping does not diff --git a/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll b/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll index 7e82daa9f80fc..bf4b8018d5526 100644 --- a/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll +++ b/polly/test/DeLICM/reduction_looprotate_gvnpre_nopreheader.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Hosted reduction load (but not the store) without preheader. ; diff --git a/polly/test/DeLICM/reduction_looprotate_hoisted.ll b/polly/test/DeLICM/reduction_looprotate_hoisted.ll index 7dc6e0fa9e408..795b94912aa42 100644 --- a/polly/test/DeLICM/reduction_looprotate_hoisted.ll +++ b/polly/test/DeLICM/reduction_looprotate_hoisted.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-invariant-load-hoisting '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-invariant-load-hoisting -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(int *A, int* StartPtr) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_licm.ll b/polly/test/DeLICM/reduction_looprotate_licm.ll index a9c55a8f54087..935f31abced30 100644 --- a/polly/test/DeLICM/reduction_looprotate_licm.ll +++ b/polly/test/DeLICM/reduction_looprotate_licm.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_licm2.ll b/polly/test/DeLICM/reduction_looprotate_licm2.ll index b98950b71bc85..8b06e7466f20a 100644 --- a/polly/test/DeLICM/reduction_looprotate_licm2.ll +++ b/polly/test/DeLICM/reduction_looprotate_licm2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-print-delicm -disable-output < %s | FileCheck %s ; ; Use %phi instead of the normal %add; that is, the last last iteration will ; be ignored such the %phi cannot be written to A[3] in %body. diff --git a/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll b/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll index 4424d904b607d..51bb7291a73ed 100644 --- a/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll +++ b/polly/test/DeLICM/reduction_looprotate_licm_double_write.ll @@ -1,4 +1,7 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule \ +; RUN: -polly-delicm-overapproximate-writes=true \ +; RUN: -polly-delicm-compute-known=true -polly-print-delicm \ +; RUN: -disable-output < %s | FileCheck %s ; ; Make sure delicm works even in case two stores that store the same value. ; diff --git a/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll b/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll index 7d20b8d5c7cbf..027df44e86193 100644 --- a/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll +++ b/polly/test/DeLICM/reduction_looprotate_licm_nopreheader.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s ; ; Register-promoted reduction but without preheader. ; diff --git a/polly/test/DeLICM/reduction_looprotate_load.ll b/polly/test/DeLICM/reduction_looprotate_load.ll index e288a86f30719..6aa83ae195031 100644 --- a/polly/test/DeLICM/reduction_looprotate_load.ll +++ b/polly/test/DeLICM/reduction_looprotate_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(int *A, double* StartPtr) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll index 4582f0a36eb5c..4ea3fa53a339a 100644 --- a/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll +++ b/polly/test/DeLICM/reduction_looprotate_loopguard_gvnpre.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Reduction over parametric number of elements and a loopguard if the ; reduction loop is not executed at all. Load hoisted before loop. diff --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll index 7df2885e01339..2e7abe444ad65 100644 --- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll +++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Reduction over parametric number of elements and a loopguard if the ; reduction loop is not executed at all. diff --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll index a1bd5d3f90fe7..60afdeb5fc97e 100644 --- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll +++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Reduction over parametric number of elements and a loopguard if the ; reduction loop is not executed at all, such that A[j] is also not written to. diff --git a/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll b/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll index 8329a85ecf13b..e63b457de92db 100644 --- a/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll +++ b/polly/test/DeLICM/reduction_looprotate_loopguard_licm3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Reduction over parametric number of elements and a loopguard if the ; reduction loop is not executed at all, such that A[j] is also not accessed. diff --git a/polly/test/DeLICM/reduction_looprotate_readonly.ll b/polly/test/DeLICM/reduction_looprotate_readonly.ll index 5227f42ae4824..a9535467b3bde 100644 --- a/polly/test/DeLICM/reduction_looprotate_readonly.ll +++ b/polly/test/DeLICM/reduction_looprotate_readonly.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(double *A, double Start) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_synthesizable.ll b/polly/test/DeLICM/reduction_looprotate_synthesizable.ll index 77d823c8ef6d5..3d486910c8612 100644 --- a/polly/test/DeLICM/reduction_looprotate_synthesizable.ll +++ b/polly/test/DeLICM/reduction_looprotate_synthesizable.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(int *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_looprotate_undef.ll b/polly/test/DeLICM/reduction_looprotate_undef.ll index f70df6075c2d3..8c0544ed77852 100644 --- a/polly/test/DeLICM/reduction_looprotate_undef.ll +++ b/polly/test/DeLICM/reduction_looprotate_undef.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-overapproximate-writes=true -polly-delicm-compute-known=true -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(int *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_overapproximate.ll b/polly/test/DeLICM/reduction_overapproximate.ll index d6cbb70a84a4a..2d33d3a0ece2a 100644 --- a/polly/test/DeLICM/reduction_overapproximate.ll +++ b/polly/test/DeLICM/reduction_overapproximate.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-compute-known=true -polly-delicm-overapproximate-writes=true -polly-delicm-partial-writes=false -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=APPROX -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-compute-known=true -polly-delicm-overapproximate-writes=false -polly-delicm-partial-writes=false -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=EXACT -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-delicm-compute-known=true -polly-delicm-partial-writes=true -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=PARTIAL +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-compute-known=true -polly-delicm-overapproximate-writes=true -polly-delicm-partial-writes=false -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=APPROX +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-compute-known=true -polly-delicm-overapproximate-writes=false -polly-delicm-partial-writes=false -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=EXACT +; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-flatten-schedule -polly-delicm-compute-known=true -polly-delicm-partial-writes=true -polly-print-delicm -disable-output < %s | FileCheck %s --check-prefix=PARTIAL ; ; void func(double *A { ; for (int j = -1; j < 3; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_preheader.ll b/polly/test/DeLICM/reduction_preheader.ll index f3ce58b1bc954..c6e3643797c04 100644 --- a/polly/test/DeLICM/reduction_preheader.ll +++ b/polly/test/DeLICM/reduction_preheader.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-flatten-schedule -polly-print-delicm -disable-output < %s | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reduction_unrelatedunusual.ll b/polly/test/DeLICM/reduction_unrelatedunusual.ll index 542cec71ab855..97826f603e5d4 100644 --- a/polly/test/DeLICM/reduction_unrelatedunusual.ll +++ b/polly/test/DeLICM/reduction_unrelatedunusual.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-delicm-partial-writes=true '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-delicm-partial-writes=true '-passes=print' -disable-output < %s | FileCheck -match-full-lines %s ; ; Map %add and %phi to A[j]. ; The non-analyzable store to C[0] is unrelated and can be ignored. diff --git a/polly/test/DeLICM/reject_loadafterstore.ll b/polly/test/DeLICM/reject_loadafterstore.ll index d56b237aa71d9..4460620852a85 100644 --- a/polly/test/DeLICM/reject_loadafterstore.ll +++ b/polly/test/DeLICM/reject_loadafterstore.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reject_outofquota.ll b/polly/test/DeLICM/reject_outofquota.ll index 9b7f8e5f97af3..9bc6bf1f23733 100644 --- a/polly/test/DeLICM/reject_outofquota.ll +++ b/polly/test/DeLICM/reject_outofquota.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -pass-remarks-analysis=polly-delicm -polly-delicm-max-ops=1 -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-delicm-max-ops=1 -polly-dependences-computeout=0 -disable-output < %s | FileCheck %s -check-prefix=DEP +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-analysis=polly-delicm -polly-delicm-max-ops=1 -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-delicm,print' -polly-delicm-max-ops=1 -polly-dependences-computeout=0 -disable-output < %s | FileCheck %s -check-prefix=DEP ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reject_storeafterstore.ll b/polly/test/DeLICM/reject_storeafterstore.ll index 0fea4d7bb3960..ddd13dad2ed31 100644 --- a/polly/test/DeLICM/reject_storeafterstore.ll +++ b/polly/test/DeLICM/reject_storeafterstore.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reject_storeinsubregion.ll b/polly/test/DeLICM/reject_storeinsubregion.ll index 0b75c16495c5c..c987156b51cd1 100644 --- a/polly/test/DeLICM/reject_storeinsubregion.ll +++ b/polly/test/DeLICM/reject_storeinsubregion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/reject_unusualstore.ll b/polly/test/DeLICM/reject_unusualstore.ll index 311a7351c955b..342888c6654f4 100644 --- a/polly/test/DeLICM/reject_unusualstore.ll +++ b/polly/test/DeLICM/reject_unusualstore.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-delicm -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=STATS +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -passes=polly-delicm -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=STATS ; REQUIRES: asserts ; ; void func(double *A) { diff --git a/polly/test/DeLICM/skip_maywrite.ll b/polly/test/DeLICM/skip_maywrite.ll index 14de2b9d0bf84..0d30791cd94e7 100644 --- a/polly/test/DeLICM/skip_maywrite.ll +++ b/polly/test/DeLICM/skip_maywrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeLICM/skip_multiaccess.ll b/polly/test/DeLICM/skip_multiaccess.ll index a213a91343f3d..a7c79f7524630 100644 --- a/polly/test/DeLICM/skip_multiaccess.ll +++ b/polly/test/DeLICM/skip_multiaccess.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; llvm.org/PR34485 ; llvm.org/PR34989 diff --git a/polly/test/DeLICM/skip_notinloop.ll b/polly/test/DeLICM/skip_notinloop.ll index 3a2dede210083..8e265e19aefea 100644 --- a/polly/test/DeLICM/skip_notinloop.ll +++ b/polly/test/DeLICM/skip_notinloop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; double phi = 0.0; diff --git a/polly/test/DeLICM/skip_scalaraccess.ll b/polly/test/DeLICM/skip_scalaraccess.ll index a0ed9f76a8ca2..2cf13afe11cdf 100644 --- a/polly/test/DeLICM/skip_scalaraccess.ll +++ b/polly/test/DeLICM/skip_scalaraccess.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s ; ; void func(double *A) { ; for (int j = 0; j < 2; j += 1) { /* outer */ diff --git a/polly/test/DeadCodeElimination/chained_iterations.ll b/polly/test/DeadCodeElimination/chained_iterations.ll index f1e47075e2f74..f3bf07bb40d83 100644 --- a/polly/test/DeadCodeElimination/chained_iterations.ll +++ b/polly/test/DeadCodeElimination/chained_iterations.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-dce,print' -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; ; for(i = 0; i < 200; i++ ) diff --git a/polly/test/DeadCodeElimination/chained_iterations_2.ll b/polly/test/DeadCodeElimination/chained_iterations_2.ll index 6ecc07c0f7d21..52f034f0e56ca 100644 --- a/polly/test/DeadCodeElimination/chained_iterations_2.ll +++ b/polly/test/DeadCodeElimination/chained_iterations_2.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-dce,print' -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; ; for(i = 0; i < 200; i++ ) diff --git a/polly/test/DeadCodeElimination/computeout.ll b/polly/test/DeadCodeElimination/computeout.ll index b43142be2a5c8..e54df42ed1db0 100644 --- a/polly/test/DeadCodeElimination/computeout.ll +++ b/polly/test/DeadCodeElimination/computeout.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-ast < %s | FileCheck %s -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT +; RUN: opt -S %loadNPMPolly "-passes=scop(polly-dce,print)" < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa "-passes=scop(polly-dce,print)" -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for(i = 0; i < 100; i++ ) diff --git a/polly/test/DeadCodeElimination/dead_iteration_elimination.ll b/polly/test/DeadCodeElimination/dead_iteration_elimination.ll index 85eea91f99207..c102f60abb659 100644 --- a/polly/test/DeadCodeElimination/dead_iteration_elimination.ll +++ b/polly/test/DeadCodeElimination/dead_iteration_elimination.ll @@ -1,4 +1,4 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-dependences-analysis-type=value-based -polly-dce-precise-steps=2 < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly "-passes=scop(polly-dce,print)" -polly-dependences-analysis-type=value-based -polly-dce-precise-steps=2 < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; ; for(i = 0; i < 200; i++ ) diff --git a/polly/test/DeadCodeElimination/non-affine-affine-mix.ll b/polly/test/DeadCodeElimination/non-affine-affine-mix.ll index 21b7c5cf9583b..36f55476fed23 100644 --- a/polly/test/DeadCodeElimination/non-affine-affine-mix.ll +++ b/polly/test/DeadCodeElimination/non-affine-affine-mix.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-dce,print' -disable-output < %s | FileCheck %s ; ; void f(int *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/DeadCodeElimination/non-affine.ll b/polly/test/DeadCodeElimination/non-affine.ll index 86cabe6501393..ef528b4124c66 100644 --- a/polly/test/DeadCodeElimination/non-affine.ll +++ b/polly/test/DeadCodeElimination/non-affine.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-dce,print' -disable-output < %s | FileCheck %s ; ; CHECK: for (int c0 = 0; c0 <= 1023; c0 += 1) ; diff --git a/polly/test/DeadCodeElimination/null_schedule.ll b/polly/test/DeadCodeElimination/null_schedule.ll index 507d690144e01..01d34e95629ba 100644 --- a/polly/test/DeadCodeElimination/null_schedule.ll +++ b/polly/test/DeadCodeElimination/null_schedule.ll @@ -1,4 +1,4 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-dependences-analysis-type=value-based '-passes=polly-dce,print' -disable-output < %s | FileCheck %s -check-prefix=CHECK-DCE target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; A[0] = 1; ; diff --git a/polly/test/DependenceInfo/computeout.ll b/polly/test/DependenceInfo/computeout.ll index 3fdc4008f8474..c2a3456b3dc80 100644 --- a/polly/test/DependenceInfo/computeout.ll +++ b/polly/test/DependenceInfo/computeout.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s -check-prefix=VALUE -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT +; RUN: opt -S %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=VALUE +; RUN: opt -S %loadNPMPolly '-passes=print' -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for(i = 0; i < 100; i++ ) diff --git a/polly/test/DependenceInfo/different_schedule_dimensions.ll b/polly/test/DependenceInfo/different_schedule_dimensions.ll index 69274f11f567f..f89791f42f9db 100644 --- a/polly/test/DependenceInfo/different_schedule_dimensions.ll +++ b/polly/test/DependenceInfo/different_schedule_dimensions.ll @@ -1,4 +1,5 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly '-passes=print' \ +; RUN: -disable-output < %s | FileCheck %s ; CHECK: RAW dependences: ; CHECK: { Stmt_bb9[0] -> Stmt_bb10[0] } diff --git a/polly/test/DependenceInfo/do_pluto_matmult.ll b/polly/test/DependenceInfo/do_pluto_matmult.ll index 2a0027bbc034b..b88cf9bf5475c 100644 --- a/polly/test/DependenceInfo/do_pluto_matmult.ll +++ b/polly/test/DependenceInfo/do_pluto_matmult.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=value-based -disable-output < %s | FileCheck %s -check-prefix=VALUE -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=memory-based -disable-output < %s | FileCheck %s -check-prefix=MEMORY +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-dependences-analysis-type=value-based -disable-output < %s | FileCheck %s -check-prefix=VALUE +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-dependences-analysis-type=memory-based -disable-output < %s | FileCheck %s -check-prefix=MEMORY target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/DependenceInfo/fine_grain_dep_0.ll b/polly/test/DependenceInfo/fine_grain_dep_0.ll index 06a196822c832..5abbf48136891 100644 --- a/polly/test/DependenceInfo/fine_grain_dep_0.ll +++ b/polly/test/DependenceInfo/fine_grain_dep_0.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s --check-prefix=REF -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s --check-prefix=ACC +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s --check-prefix=REF +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s --check-prefix=ACC ; REF: RAW dependences: ; REF-NEXT: [N] -> { [Stmt_for_body[i0] -> MemRef_b[]] -> [Stmt_for_body[6 + i0] -> MemRef_b[]] : 0 <= i0 <= -13 + N; Stmt_for_body[i0] -> Stmt_for_body[6 + i0] : 0 <= i0 <= -13 + N; Stmt_for_body[i0] -> Stmt_for_body[4 + i0] : 0 <= i0 <= -11 + N; [Stmt_for_body[i0] -> MemRef_a[]] -> [Stmt_for_body[4 + i0] -> MemRef_a[]] : 0 <= i0 <= -11 + N } diff --git a/polly/test/DependenceInfo/generate_may_write_dependence_info.ll b/polly/test/DependenceInfo/generate_may_write_dependence_info.ll index 9875257694331..677323495476b 100644 --- a/polly/test/DependenceInfo/generate_may_write_dependence_info.ll +++ b/polly/test/DependenceInfo/generate_may_write_dependence_info.ll @@ -1,4 +1,4 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s -check-prefix=VALUE +; RUN: opt -S %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=VALUE target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" ; for (int i = 0; i < N; i++) { diff --git a/polly/test/DependenceInfo/infeasible_context.ll b/polly/test/DependenceInfo/infeasible_context.ll index c9473e614e362..cde3102dc3dc9 100644 --- a/polly/test/DependenceInfo/infeasible_context.ll +++ b/polly/test/DependenceInfo/infeasible_context.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=FUNC-SCOP -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-deps -disable-output < %s 2>&1 | FileCheck %s -check-prefix=FUNC-DEPS +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=FUNC-SCOP +; RUN: opt %loadNPMPolly '-passes=print,scop(print)' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=FUNC-DEPS ; ; FUNC-SCOP-NOT: Statement ; FUNC-DEPS-NOT: RAW dependences diff --git a/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll b/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll index 92e6cb89b2a27..392a34769cddb 100644 --- a/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll +++ b/polly/test/DependenceInfo/may_writes_do_not_block_must_writes_for_war.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; Verify that the presence of a may-write (S1) between a read (S0) and a ; must-write (S2) does not block the generation of RAW dependences. This makes diff --git a/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll b/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll index b14759725dde0..ae5fd3beed399 100644 --- a/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll +++ b/polly/test/DependenceInfo/nonaffine-condition-buildMemoryAccess.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-allow-nonaffine-loops -polly-allow-nonaffine -debug-only=polly-dependence < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-allow-nonaffine-loops -polly-allow-nonaffine -debug-only=polly-dependence < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; CHECK: MayWriteAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/DependenceInfo/reduction_complex_location.ll b/polly/test/DependenceInfo/reduction_complex_location.ll index 45789088e57e4..7722ee974c3fa 100644 --- a/polly/test/DependenceInfo/reduction_complex_location.ll +++ b/polly/test/DependenceInfo/reduction_complex_location.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } diff --git a/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll b/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll index 7923975118bb9..840d1f32dca39 100644 --- a/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll +++ b/polly/test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s ; ; This loopnest contains a reduction which imposes the same dependences as the ; accesses to the array A. We need to ensure we keep the dependences of A. diff --git a/polly/test/DependenceInfo/reduction_dependences_not_null.ll b/polly/test/DependenceInfo/reduction_dependences_not_null.ll index fdcd5f311800d..56d84a9aec6d6 100644 --- a/polly/test/DependenceInfo/reduction_dependences_not_null.ll +++ b/polly/test/DependenceInfo/reduction_dependences_not_null.ll @@ -1,7 +1,7 @@ ; Test that the reduction dependences are always initialised, even in a case ; where we have no reduction. If this object is NULL, then isl operations on ; it will fail. -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s -check-prefix=VALUE +; RUN: opt -S %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -check-prefix=VALUE target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for(i = 0; i < 100; i++ ) diff --git a/polly/test/DependenceInfo/reduction_indirect_access.ll b/polly/test/DependenceInfo/reduction_indirect_access.ll index 13675ada39b0e..3b4bd9ef04b5a 100644 --- a/polly/test/DependenceInfo/reduction_indirect_access.ll +++ b/polly/test/DependenceInfo/reduction_indirect_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-allow-nonaffine -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-allow-nonaffine -disable-output < %s | FileCheck %s ; ; CHECK: Reduction dependences: ; CHECK: [N] -> { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= -2 + N } diff --git a/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll b/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll index e6ce425719ca9..76c7fc64ae89c 100644 --- a/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll +++ b/polly/test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0 + i1, o1] : i0 >= 0 and 0 <= i1 <= 1023 - i0 and i1 <= 1 and 0 < o1 <= 511 } diff --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll index 820371937a582..02b814a0d7c04 100644 --- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll +++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll @@ -1,6 +1,6 @@ -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=print' -polly-dependences-analysis-level=reference-wise -disable-output < %s | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=print' -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s ; ; Verify that only the inner reduction like accesses cause reduction dependences ; diff --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll index 9792f791c6989..91bd35deebd06 100644 --- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll +++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } diff --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll index 9bde285c64516..040d513782392 100644 --- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll +++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s ; ; CHECK: Reduction dependences: ; CHECK-NEXT: { Stmt_for_inc[i0, i1] -> Stmt_for_inc[i0, 1 + i1] : 0 <= i0 <= 99 and 0 <= i1 <= 98 } diff --git a/polly/test/DependenceInfo/reduction_multiple_reductions.ll b/polly/test/DependenceInfo/reduction_multiple_reductions.ll index ac3adb9065462..527a8cfc3556e 100644 --- a/polly/test/DependenceInfo/reduction_multiple_reductions.ll +++ b/polly/test/DependenceInfo/reduction_multiple_reductions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s ; ; Verify we do not have dependences between the if and the else clause ; diff --git a/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll b/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll index 16ca85bff9502..fb5fd96a2e426 100644 --- a/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll +++ b/polly/test/DependenceInfo/reduction_multiple_reductions_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s ; ; ; These are the important RAW dependences, as they need to originate/end in only one iteration: diff --git a/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll b/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll index de506a39485cc..3ec3920268b49 100644 --- a/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll +++ b/polly/test/DependenceInfo/reduction_only_reduction_like_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; FIXME: Change the comment once we allow different pointers ; The statement is "almost" reduction like but should not yield any reduction dependences diff --git a/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll b/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll index fbf1409a1ba30..23bd8ef25bd7a 100644 --- a/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll +++ b/polly/test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s ; ; CHECK: Reduction dependences: ; CHECK-NEXT: [N] -> { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, 1 + i1] : 0 <= i0 <= 1023 and i1 >= 0 and 1024 - N + i0 <= i1 <= 1022 } diff --git a/polly/test/DependenceInfo/reduction_privatization_deps.ll b/polly/test/DependenceInfo/reduction_privatization_deps.ll index 0d66f885cd42d..0e0f71737ffd3 100644 --- a/polly/test/DependenceInfo/reduction_privatization_deps.ll +++ b/polly/test/DependenceInfo/reduction_privatization_deps.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S2[-1 + i0 + i1] : 0 <= i0 <= 1023 and i1 >= 0 and -i0 < i1 <= 1024 - i0 and i1 <= 1023; Stmt_S0[i0] -> Stmt_S1[o0, i0 - o0] : i0 <= 1023 and 0 <= o0 <= i0 } diff --git a/polly/test/DependenceInfo/reduction_privatization_deps_2.ll b/polly/test/DependenceInfo/reduction_privatization_deps_2.ll index 81235d6cf02e4..cafa319e2cc7b 100644 --- a/polly/test/DependenceInfo/reduction_privatization_deps_2.ll +++ b/polly/test/DependenceInfo/reduction_privatization_deps_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; We have privatization dependences from a textually later statement to a ; textually earlier one, but the dependences still go forward in time. diff --git a/polly/test/DependenceInfo/reduction_privatization_deps_3.ll b/polly/test/DependenceInfo/reduction_privatization_deps_3.ll index 6b48ab5afd155..d86da92fbcab8 100644 --- a/polly/test/DependenceInfo/reduction_privatization_deps_3.ll +++ b/polly/test/DependenceInfo/reduction_privatization_deps_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96; Stmt_S2[i0, i1] -> Stmt_S3[o0] : i1 <= 1 - i0 and -i1 < o0 <= 1 and o0 <= 1 + i0 - i1; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98 } diff --git a/polly/test/DependenceInfo/reduction_privatization_deps_4.ll b/polly/test/DependenceInfo/reduction_privatization_deps_4.ll index 1fef004c4c47a..d84c04fc309b0 100644 --- a/polly/test/DependenceInfo/reduction_privatization_deps_4.ll +++ b/polly/test/DependenceInfo/reduction_privatization_deps_4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98 } diff --git a/polly/test/DependenceInfo/reduction_privatization_deps_5.ll b/polly/test/DependenceInfo/reduction_privatization_deps_5.ll index f40a7c07a3ba4..592c7238c3c59 100644 --- a/polly/test/DependenceInfo/reduction_privatization_deps_5.ll +++ b/polly/test/DependenceInfo/reduction_privatization_deps_5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_S1[i0, 0] -> Stmt_S2[i0, 0] : 0 <= i0 <= 98; Stmt_S2[i0, 0] -> Stmt_S1[1 + i0, 0] : 0 <= i0 <= 97 } diff --git a/polly/test/DependenceInfo/reduction_sequence.ll b/polly/test/DependenceInfo/reduction_sequence.ll index d881a99adc226..7ce9d37d395bb 100644 --- a/polly/test/DependenceInfo/reduction_sequence.ll +++ b/polly/test/DependenceInfo/reduction_sequence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; void manyreductions(long *A) { ; for (long i = 0; i < 1024; i++) diff --git a/polly/test/DependenceInfo/reduction_simple_iv.ll b/polly/test/DependenceInfo/reduction_simple_iv.ll index b811d1593ab02..d13d14ecaad92 100644 --- a/polly/test/DependenceInfo/reduction_simple_iv.ll +++ b/polly/test/DependenceInfo/reduction_simple_iv.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } diff --git a/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll b/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll index 0a5d36f9b9f79..4c97fbb1aacb7 100644 --- a/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll +++ b/polly/test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -debug-only=polly-dependence -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -debug-only=polly-dependence -disable-output < %s 2>&1 | FileCheck %s ; ; REQUIRES: asserts ; diff --git a/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll b/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll index 90f9d76ef57b2..804005cf72a72 100644 --- a/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll +++ b/polly/test/DependenceInfo/reduction_simple_privatization_deps_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S2[i0] : 0 <= i0 <= 99 and 0 <= i1 <= 99; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 99 and 0 <= o1 <= 99; Stmt_S2[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 98 } diff --git a/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll b/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll index 2b194bbb51988..9596827b4cbbf 100644 --- a/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll +++ b/polly/test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023; Stmt_S0[] -> Stmt_S1[o0] : N >= 11 and 0 <= o0 <= 1023 } diff --git a/polly/test/DependenceInfo/reduction_two_reductions_different_rloops.ll b/polly/test/DependenceInfo/reduction_two_reductions_different_rloops.ll index 70d5bdf64059d..d67683d11a4b3 100644 --- a/polly/test/DependenceInfo/reduction_two_reductions_different_rloops.ll +++ b/polly/test/DependenceInfo/reduction_two_reductions_different_rloops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } diff --git a/polly/test/DependenceInfo/sequential_loops.ll b/polly/test/DependenceInfo/sequential_loops.ll index 023c2d4f29f37..6ae7200303321 100644 --- a/polly/test/DependenceInfo/sequential_loops.ll +++ b/polly/test/DependenceInfo/sequential_loops.ll @@ -1,6 +1,6 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=value-based -disable-output < %s | FileCheck %s -check-prefix=VALUE -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=memory-based -disable-output < %s | FileCheck %s -check-prefix=MEMORY -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-deps -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s -check-prefix=VALUE_ACCESS +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-dependences-analysis-type=value-based -disable-output < %s | FileCheck %s -check-prefix=VALUE +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-dependences-analysis-type=memory-based -disable-output < %s | FileCheck %s -check-prefix=MEMORY +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise -disable-output < %s | FileCheck %s -check-prefix=VALUE_ACCESS ; VALUE: RAW dependences: ; VALUE-NEXT: { } diff --git a/polly/test/FlattenSchedule/gemm.ll b/polly/test/FlattenSchedule/gemm.ll index 11dc40599bb0e..b20293bd315a3 100644 --- a/polly/test/FlattenSchedule/gemm.ll +++ b/polly/test/FlattenSchedule/gemm.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-flatten-schedule -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-flatten-schedule -disable-output < %s | FileCheck %s ; ; dgemm kernel ; C := alpha*A*B + beta*C diff --git a/polly/test/ForwardOpTree/atax.ll b/polly/test/ForwardOpTree/atax.ll index 3dfe3fa0aa8e6..6c81fb12e8cdc 100644 --- a/polly/test/ForwardOpTree/atax.ll +++ b/polly/test/ForwardOpTree/atax.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-optree-normalize-phi=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-optree-normalize-phi=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ForwardOpTree/changed-kind.ll b/polly/test/ForwardOpTree/changed-kind.ll index ec8869da3ae57..b9081f3734044 100644 --- a/polly/test/ForwardOpTree/changed-kind.ll +++ b/polly/test/ForwardOpTree/changed-kind.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; In the code below, %0 is known to be equal to the content of @c (constant 0). ; Thus, in order to save a scalar dependency, forward-optree replaces diff --git a/polly/test/ForwardOpTree/forward_from_region.ll b/polly/test/ForwardOpTree/forward_from_region.ll index de47bc4df0076..767a580dccf95 100644 --- a/polly/test/ForwardOpTree/forward_from_region.ll +++ b/polly/test/ForwardOpTree/forward_from_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move instructions from region statements. ; diff --git a/polly/test/ForwardOpTree/forward_hoisted.ll b/polly/test/ForwardOpTree/forward_hoisted.ll index 39f99545b01ac..5d0b0a884b761 100644 --- a/polly/test/ForwardOpTree/forward_hoisted.ll +++ b/polly/test/ForwardOpTree/forward_hoisted.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move %val to %bodyB, so %bodyA can be removed (by -polly-simplify). ; This involves making the load-hoisted %val1 to be made available in %bodyB. diff --git a/polly/test/ForwardOpTree/forward_instruction.ll b/polly/test/ForwardOpTree/forward_instruction.ll index a9f5d3d85ac0a..50a9b07b8a05b 100644 --- a/polly/test/ForwardOpTree/forward_instruction.ll +++ b/polly/test/ForwardOpTree/forward_instruction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move %val to %bodyB, so %bodyA can be removed (by -polly-simplify) ; diff --git a/polly/test/ForwardOpTree/forward_into_region.ll b/polly/test/ForwardOpTree/forward_into_region.ll index 2279a89cfaeb7..ef71b11dc5716 100644 --- a/polly/test/ForwardOpTree/forward_into_region.ll +++ b/polly/test/ForwardOpTree/forward_into_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move instructions to region statements. ; diff --git a/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll b/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll index f7901e1ccf8fd..1c585446ae63a 100644 --- a/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll +++ b/polly/test/ForwardOpTree/forward_into_region_redundant_use.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; define void @foo(ptr %A, i32 %p, ptr %B) { diff --git a/polly/test/ForwardOpTree/forward_load.ll b/polly/test/ForwardOpTree/forward_load.ll index 860e603ef47d2..0bba41833fb19 100644 --- a/polly/test/ForwardOpTree/forward_load.ll +++ b/polly/test/ForwardOpTree/forward_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load. ; diff --git a/polly/test/ForwardOpTree/forward_load_differentarray.ll b/polly/test/ForwardOpTree/forward_load_differentarray.ll index 24b008cfae384..364bf3ef37133 100644 --- a/polly/test/ForwardOpTree/forward_load_differentarray.ll +++ b/polly/test/ForwardOpTree/forward_load_differentarray.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; To forward %val, B[j] cannot be reused in bodyC because it is overwritten ; between. Verify that instead the alternative C[j] is used. diff --git a/polly/test/ForwardOpTree/forward_load_double_write.ll b/polly/test/ForwardOpTree/forward_load_double_write.ll index 522e803b2d0a0..4c30c7f8da56f 100644 --- a/polly/test/ForwardOpTree/forward_load_double_write.ll +++ b/polly/test/ForwardOpTree/forward_load_double_write.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load even in case two writes of identical values are in ; one scop statement. diff --git a/polly/test/ForwardOpTree/forward_load_fromloop.ll b/polly/test/ForwardOpTree/forward_load_fromloop.ll index 5c64221d882b9..1494e872a8942 100644 --- a/polly/test/ForwardOpTree/forward_load_fromloop.ll +++ b/polly/test/ForwardOpTree/forward_load_fromloop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Forward a the LoadInst %val into %bodyB. %val is executed multiple times, ; we must get the last loaded values. diff --git a/polly/test/ForwardOpTree/forward_load_indirect.ll b/polly/test/ForwardOpTree/forward_load_indirect.ll index 5b06c357f02ba..51ce94d267277 100644 --- a/polly/test/ForwardOpTree/forward_load_indirect.ll +++ b/polly/test/ForwardOpTree/forward_load_indirect.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Forward an operand tree consisting of a speculatable instruction (%add) ; and a load (%val). diff --git a/polly/test/ForwardOpTree/forward_load_memset_after.ll b/polly/test/ForwardOpTree/forward_load_memset_after.ll index b889783d531e6..bd2cad411eccf 100644 --- a/polly/test/ForwardOpTree/forward_load_memset_after.ll +++ b/polly/test/ForwardOpTree/forward_load_memset_after.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load in the presence of a non-store WRITE access. ; diff --git a/polly/test/ForwardOpTree/forward_load_memset_before.ll b/polly/test/ForwardOpTree/forward_load_memset_before.ll index c8f0e0e5814fb..3e89dea37775c 100644 --- a/polly/test/ForwardOpTree/forward_load_memset_before.ll +++ b/polly/test/ForwardOpTree/forward_load_memset_before.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load in the presence of a non-store WRITE access. ; diff --git a/polly/test/ForwardOpTree/forward_load_tripleuse.ll b/polly/test/ForwardOpTree/forward_load_tripleuse.ll index df57bf70cc53b..7526a8313945d 100644 --- a/polly/test/ForwardOpTree/forward_load_tripleuse.ll +++ b/polly/test/ForwardOpTree/forward_load_tripleuse.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print,polly-codegen' -disable-output < %s | FileCheck %s -match-full-lines ; ; %val1 is used three times: Twice by its own operand tree of %val2 and once ; more by the store in %bodyB. diff --git a/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll b/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll index ba84a1a16748f..daf289d8b0da1 100644 --- a/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll +++ b/polly/test/ForwardOpTree/forward_load_unrelatedunusual.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load. ; The non-analyzable store to C[0] is unrelated and can be ignored. diff --git a/polly/test/ForwardOpTree/forward_phi_load.ll b/polly/test/ForwardOpTree/forward_phi_load.ll index c763af4269c89..1457aa96e2de7 100644 --- a/polly/test/ForwardOpTree/forward_phi_load.ll +++ b/polly/test/ForwardOpTree/forward_phi_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-optree-normalize-phi=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-optree-normalize-phi=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load. ; diff --git a/polly/test/ForwardOpTree/forward_readonly.ll b/polly/test/ForwardOpTree/forward_readonly.ll index 69c7f10be4e56..646121c4efeff 100644 --- a/polly/test/ForwardOpTree/forward_readonly.ll +++ b/polly/test/ForwardOpTree/forward_readonly.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines -check-prefixes=STATS,MODEL -; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=false '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines -check-prefixes=STATS,NOMODEL +; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines -check-prefixes=STATS,MODEL +; RUN: opt %loadNPMPolly -polly-analyze-read-only-scalars=false '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines -check-prefixes=STATS,NOMODEL ; ; Move %val to %bodyB, so %bodyA can be removed (by -polly-simplify) ; diff --git a/polly/test/ForwardOpTree/forward_reusue.ll b/polly/test/ForwardOpTree/forward_reusue.ll index e39e7b51dc689..d8ad31782ecb9 100644 --- a/polly/test/ForwardOpTree/forward_reusue.ll +++ b/polly/test/ForwardOpTree/forward_reusue.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move operand tree without duplicating values used multiple times. ; diff --git a/polly/test/ForwardOpTree/forward_store.ll b/polly/test/ForwardOpTree/forward_store.ll index 8cd6e2446ff93..17cb8b395eb30 100644 --- a/polly/test/ForwardOpTree/forward_store.ll +++ b/polly/test/ForwardOpTree/forward_store.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Rematerialize a load. ; diff --git a/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll b/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll index f70965f3c5d1b..57b68180bb121 100644 --- a/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll +++ b/polly/test/ForwardOpTree/forward_synthesizable_definloop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Copy %val to bodyB, assuming the exit value of %i. ; diff --git a/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll b/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll index c95c45856ac36..b4828e4c2c423 100644 --- a/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll +++ b/polly/test/ForwardOpTree/forward_synthesizable_indvar.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Test support for (synthesizable) inducation variables. ; diff --git a/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll b/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll index 14fb8d8dcc0ab..3228bb60d2ca2 100644 --- a/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll +++ b/polly/test/ForwardOpTree/forward_synthesizable_useinloop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Synthesizable values defined outside of a loop can be used ; inside the loop. diff --git a/polly/test/ForwardOpTree/forward_transitive.ll b/polly/test/ForwardOpTree/forward_transitive.ll index 7b55d9e0cf9b2..aacf1358648f5 100644 --- a/polly/test/ForwardOpTree/forward_transitive.ll +++ b/polly/test/ForwardOpTree/forward_transitive.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Move %v and %val to %bodyB, so %bodyA can be removed (by -polly-simplify) ; diff --git a/polly/test/ForwardOpTree/jacobi-1d.ll b/polly/test/ForwardOpTree/jacobi-1d.ll index 3bc504d88c0eb..cb035bb749c7b 100644 --- a/polly/test/ForwardOpTree/jacobi-1d.ll +++ b/polly/test/ForwardOpTree/jacobi-1d.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-optree-normalize-phi=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-optree-normalize-phi=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ForwardOpTree/noforward_from_region.ll b/polly/test/ForwardOpTree/noforward_from_region.ll index 0729241c3f7d9..bd5864c25f543 100644 --- a/polly/test/ForwardOpTree/noforward_from_region.ll +++ b/polly/test/ForwardOpTree/noforward_from_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Ensure we do not move instructions from region statements in case the ; instruction to move loads from an array which is also written to from diff --git a/polly/test/ForwardOpTree/noforward_load_conditional.ll b/polly/test/ForwardOpTree/noforward_load_conditional.ll index d33ef99ae6bed..5474e740de800 100644 --- a/polly/test/ForwardOpTree/noforward_load_conditional.ll +++ b/polly/test/ForwardOpTree/noforward_load_conditional.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; B[j] is overwritten by at least one statement between the ; definition of %val and its use. Hence, it cannot be forwarded. diff --git a/polly/test/ForwardOpTree/noforward_load_writebetween.ll b/polly/test/ForwardOpTree/noforward_load_writebetween.ll index e7deb381de87a..697c940be4fdd 100644 --- a/polly/test/ForwardOpTree/noforward_load_writebetween.ll +++ b/polly/test/ForwardOpTree/noforward_load_writebetween.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Cannot rematerialize %val from B[0] at bodyC because B[0] has been ; overwritten in bodyB. diff --git a/polly/test/ForwardOpTree/noforward_outofquota.ll b/polly/test/ForwardOpTree/noforward_outofquota.ll index 5e30cf88de4cf..306bb8d7558d1 100644 --- a/polly/test/ForwardOpTree/noforward_outofquota.ll +++ b/polly/test/ForwardOpTree/noforward_outofquota.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-optree-max-ops=1 '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines -; RUN: opt %loadNPMPolly -polly-optree-max-ops=1 '-passes=polly-custom' -disable-output -stats < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=STATS +; RUN: opt %loadNPMPolly -polly-optree-max-ops=1 '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-optree-max-ops=1 -passes=polly-optree -disable-output -stats < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=STATS ; REQUIRES: asserts ; ; for (int j = 0; j < n; j += 1) { diff --git a/polly/test/ForwardOpTree/noforward_partial.ll b/polly/test/ForwardOpTree/noforward_partial.ll index f95bb77f70b67..edb5d34801cc5 100644 --- a/polly/test/ForwardOpTree/noforward_partial.ll +++ b/polly/test/ForwardOpTree/noforward_partial.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Not the entire operand tree can be forwarded, ; some scalar dependencies would remain. diff --git a/polly/test/ForwardOpTree/noforward_phi.ll b/polly/test/ForwardOpTree/noforward_phi.ll index 025fe64724151..755abad4336ef 100644 --- a/polly/test/ForwardOpTree/noforward_phi.ll +++ b/polly/test/ForwardOpTree/noforward_phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Do not move PHI nodes. ; diff --git a/polly/test/ForwardOpTree/noforward_selfrefphi.ll b/polly/test/ForwardOpTree/noforward_selfrefphi.ll index 8b30137858243..be7e82f726331 100644 --- a/polly/test/ForwardOpTree/noforward_selfrefphi.ll +++ b/polly/test/ForwardOpTree/noforward_selfrefphi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-optree-normalize-phi=true '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-optree-normalize-phi=true '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Contains a self-referencing PHINode that would require a ; transitive closure to handle. diff --git a/polly/test/ForwardOpTree/noforward_sideffects.ll b/polly/test/ForwardOpTree/noforward_sideffects.ll index 179b02a259025..c01b72a1c1420 100644 --- a/polly/test/ForwardOpTree/noforward_sideffects.ll +++ b/polly/test/ForwardOpTree/noforward_sideffects.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Do not forward instructions with side-effects (here: function call). ; diff --git a/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll b/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll index 6baec6d9e1c6c..776d848072a23 100644 --- a/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll +++ b/polly/test/ForwardOpTree/noforward_synthesizable_unknownit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Do not try to forward %i.trunc, it is not synthesizable in %body. ; diff --git a/polly/test/ForwardOpTree/out-of-quota1.ll b/polly/test/ForwardOpTree/out-of-quota1.ll index 95df49a5c061a..ee3e32698dd02 100644 --- a/polly/test/ForwardOpTree/out-of-quota1.ll +++ b/polly/test/ForwardOpTree/out-of-quota1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-optree -disable-output %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output %s | FileCheck %s ; This used to loop infinitely because of UINT_MAX returned by ISL on out-of-quota. diff --git a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll index a5102b3557f0c..ec1ccdce94508 100644 --- a/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/multiple_loops_outer_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s ; ; void jd(int *A) { ; CHECK: #pragma omp parallel for diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll index d086b59f97a5a..9c00690605408 100644 --- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < 1024; i++) diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll index 49a6b0531de56..356762a2ae5b9 100644 --- a/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll +++ b/polly/test/IstAstInfo/OpenMP/nested_loop_both_parallel_parametric.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; int A[1024][1024]; ; void bar(int n) { diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll index d2d7917b08528..066fc39def6ac 100644 --- a/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/nested_loop_inner_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < n; i++) diff --git a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll index c03189a211256..77dd55cb7605e 100644 --- a/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/nested_loop_outer_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < n; i++) diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll index 6829211cc76b9..b61ebc9379b7f 100644 --- a/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_non_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < n; i++) diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll index 7199a337d8a4f..5c92a91681867 100644 --- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll +++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-parallel-force -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < n; i++) diff --git a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll index 41d35bfdb3631..352d879199675 100644 --- a/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll +++ b/polly/test/IstAstInfo/OpenMP/single_loop_param_parallel_computeout.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-parallel -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-parallel -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for (i = 0; i < n; i++) diff --git a/polly/test/IstAstInfo/alias_checks_with_empty_context.ll b/polly/test/IstAstInfo/alias_checks_with_empty_context.ll index 356269cefad36..81c29536010b6 100644 --- a/polly/test/IstAstInfo/alias_checks_with_empty_context.ll +++ b/polly/test/IstAstInfo/alias_checks_with_empty_context.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s \ +; RUN: | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/IstAstInfo/alias_simple_1.ll b/polly/test/IstAstInfo/alias_simple_1.ll index 039c5f74fabfe..904f55dc32ce4 100644 --- a/polly/test/IstAstInfo/alias_simple_1.ll +++ b/polly/test/IstAstInfo/alias_simple_1.ll @@ -1,8 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB ; ; int A[1024]; ; diff --git a/polly/test/IstAstInfo/alias_simple_2.ll b/polly/test/IstAstInfo/alias_simple_2.ll index 1783a04f02be9..5fae579995b23 100644 --- a/polly/test/IstAstInfo/alias_simple_2.ll +++ b/polly/test/IstAstInfo/alias_simple_2.ll @@ -1,9 +1,9 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=globals-aa -polly-allow-nonaffine -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=globals-aa -polly-allow-nonaffine -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE ; ; int A[1024], B[1024]; ; diff --git a/polly/test/IstAstInfo/alias_simple_3.ll b/polly/test/IstAstInfo/alias_simple_3.ll index 8d507fb82cb2d..8599c29934744 100644 --- a/polly/test/IstAstInfo/alias_simple_3.ll +++ b/polly/test/IstAstInfo/alias_simple_3.ll @@ -1,8 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=basic-aa -disable-output < %s | FileCheck %s --check-prefix=BASI +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=scev-aa -disable-output < %s | FileCheck %s --check-prefix=SCEV +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=globals-aa -disable-output < %s | FileCheck %s --check-prefix=GLOB ; ; int A[1024]; ; float B[1024]; diff --git a/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll b/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll index 01b5372917358..dc21dc1f96a48 100644 --- a/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll +++ b/polly/test/IstAstInfo/aliasing_arrays_with_identical_base.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output -polly-invariant-load-hoisting < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; CHECK: if (1 && 1 && (&MemRef_X[1] <= &MemRef_BaseA[0] || &MemRef_BaseA[1024] <= &MemRef_X[0]) && (&MemRef_X[1] <= &MemRef_BaseB[0] || &MemRef_BaseB[1024] <= &MemRef_X[0])) diff --git a/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll b/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll index 3835c23fecddb..8d4adfa405f07 100644 --- a/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll +++ b/polly/test/IstAstInfo/aliasing_multiple_alias_groups.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline= -disable-output < %s | FileCheck %s --check-prefix=NOAA +; RUN: opt %loadNPMPolly '-passes=print' -aa-pipeline=tbaa -disable-output < %s | FileCheck %s --check-prefix=TBAA ; ; void jd(int *Int0, int *Int1, float *Float0, float *Float1) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll b/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll index 71bac9a2bb141..be37b27b6e375 100644 --- a/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll +++ b/polly/test/IstAstInfo/aliasing_parametric_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output %s | FileCheck %s ; ; void jd(int *A, int *B, int c) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll b/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll index e5ece1f57a85e..15550583340db 100644 --- a/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll +++ b/polly/test/IstAstInfo/aliasing_parametric_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; ; void jd(int *A, int *B, int c) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/IstAstInfo/dependence_distance_constant.ll b/polly/test/IstAstInfo/dependence_distance_constant.ll index 43b13eef9a95b..9b7fb93f2f676 100644 --- a/polly/test/IstAstInfo/dependence_distance_constant.ll +++ b/polly/test/IstAstInfo/dependence_distance_constant.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *A, int N) { ; CHECK: #pragma minimal dependence distance: 1 diff --git a/polly/test/IstAstInfo/dependence_distance_minimal.ll b/polly/test/IstAstInfo/dependence_distance_minimal.ll index 35a503ce7eb8d..d69cc3f9fc3f8 100644 --- a/polly/test/IstAstInfo/dependence_distance_minimal.ll +++ b/polly/test/IstAstInfo/dependence_distance_minimal.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; The minimal dependence distance of the innermost loop should be 1 instead of 250. ; CHECK: #pragma minimal dependence distance: 1 diff --git a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll index a7de5c4876385..bc21e9e07ad89 100644 --- a/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll +++ b/polly/test/IstAstInfo/dependence_distance_multiple_constant.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-stmt-granularity=bb -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *restrict A, int *restrict B, int N) { ; CHECK: #pragma minimal dependence distance: 5 diff --git a/polly/test/IstAstInfo/dependence_distance_parametric.ll b/polly/test/IstAstInfo/dependence_distance_parametric.ll index fa05e4c889031..fa569a8386b86 100644 --- a/polly/test/IstAstInfo/dependence_distance_parametric.ll +++ b/polly/test/IstAstInfo/dependence_distance_parametric.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *A, int N, int c) { ; CHECK: #pragma minimal dependence distance: 1 diff --git a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll index 73f74b3bce0b1..7f280e0c542ca 100644 --- a/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll +++ b/polly/test/IstAstInfo/dependence_distance_parametric_expr.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *A, int N, int c, int v) { ; CHECK: #pragma minimal dependence distance: 1 diff --git a/polly/test/IstAstInfo/dependence_distance_varying.ll b/polly/test/IstAstInfo/dependence_distance_varying.ll index e908954536600..d609c2f210f8d 100644 --- a/polly/test/IstAstInfo/dependence_distance_varying.ll +++ b/polly/test/IstAstInfo/dependence_distance_varying.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *A, int N) { ; CHECK: #pragma minimal dependence distance: -(N % 2) + 2 diff --git a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll index 1668fc0515441..8ed3220353c1b 100644 --- a/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll +++ b/polly/test/IstAstInfo/dependence_distance_varying_in_outer_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-canonicalize -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *restrict A, int *restrict sum) { ; CHECK: #pragma minimal dependence distance: 1 diff --git a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll index 0d0aa8bea31d8..73768e9c308a4 100644 --- a/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll +++ b/polly/test/IstAstInfo/dependence_distance_varying_multiple.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-stmt-granularity=bb -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; void f(int *restrict A, int *restrict B, int *restrict C, int *restrict D, ; int *restrict E, int N) { diff --git a/polly/test/IstAstInfo/domain_bounded_only_with_context.ll b/polly/test/IstAstInfo/domain_bounded_only_with_context.ll index 2ed94e59e8087..e2cf0bd9c0df2 100644 --- a/polly/test/IstAstInfo/domain_bounded_only_with_context.ll +++ b/polly/test/IstAstInfo/domain_bounded_only_with_context.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; CHECK: { ; CHECK-NEXT: if (p <= -1 || p >= 1) diff --git a/polly/test/IstAstInfo/non_affine_access.ll b/polly/test/IstAstInfo/non_affine_access.ll index a285a8f032f5e..98e8d2db959f8 100644 --- a/polly/test/IstAstInfo/non_affine_access.ll +++ b/polly/test/IstAstInfo/non_affine_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-print-accesses -polly-allow-nonaffine -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-print-accesses -polly-allow-nonaffine -disable-output < %s | FileCheck %s ; ; void non_affine_access(float A[]) { ; for (long i = 0; i < 1024; i++) diff --git a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll index 3fefc74efbef0..697b6ca50d444 100644 --- a/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll +++ b/polly/test/IstAstInfo/reduction_clauses_multidimensional_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel reduction (^ : MemRef_sum) ; void f(int N, int M, int P, int sum[P][M]) { diff --git a/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll b/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll index 41bd178c73c2a..c20a7d6db13c9 100644 --- a/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll +++ b/polly/test/IstAstInfo/reduction_clauses_onedimensional_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel reduction (^ : MemRef_sum) ; void f(int N, int M, int *sum) { diff --git a/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll b/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll index 5aa8a0c244423..e6092f0b068f8 100644 --- a/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll +++ b/polly/test/IstAstInfo/reduction_dependences_equal_non_reduction_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; This loopnest contains a reduction which imposes the same dependences as the ; accesses to the array A. We need to ensure we do __not__ parallelize anything diff --git a/polly/test/IstAstInfo/reduction_different_reduction_clauses.ll b/polly/test/IstAstInfo/reduction_different_reduction_clauses.ll index 91f7c9d9601bc..14de70f9357c3 100644 --- a/polly/test/IstAstInfo/reduction_different_reduction_clauses.ll +++ b/polly/test/IstAstInfo/reduction_different_reduction_clauses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma simd reduction (+ : MemRef_sum{{[1,2]}}, MemRef_sum{{[1,2]}}) reduction (* : MemRef_prod) reduction (| : MemRef_or) reduction (& : MemRef_and) ; CHECK: #pragma known-parallel reduction (+ : MemRef_sum{{[1,2]}}, MemRef_sum{{[1,2]}}) reduction (* : MemRef_prod) reduction (| : MemRef_or) reduction (& : MemRef_and) diff --git a/polly/test/IstAstInfo/reduction_in_one_dimension.ll b/polly/test/IstAstInfo/reduction_in_one_dimension.ll index d0173bcd978ca..797115b6f8d70 100644 --- a/polly/test/IstAstInfo/reduction_in_one_dimension.ll +++ b/polly/test/IstAstInfo/reduction_in_one_dimension.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; Verify that we won't privatize anything in the outer dimension ; diff --git a/polly/test/IstAstInfo/reduction_loop_reversal.ll b/polly/test/IstAstInfo/reduction_loop_reversal.ll index d010e26f739a6..d30119787d8e0 100644 --- a/polly/test/IstAstInfo/reduction_loop_reversal.ll +++ b/polly/test/IstAstInfo/reduction_loop_reversal.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-import-jscop -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK-NOT: #pragma simd{{\s*$}} ; CHECK: #pragma simd reduction diff --git a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll index 7f78badfcb93c..15fca884c2b63 100644 --- a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll +++ b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel reduction (+ : MemRef_A) ; CHECK-NEXT: for (int c0 = 0; c0 <= 2; c0 += 1) { diff --git a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll index 42e9c3b19eb1b..44e9aa4d1e569 100644 --- a/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll +++ b/polly/test/IstAstInfo/reduction_modulo_and_loop_reversal_schedule_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel reduction ; CHECK: for (int c0 = 0; c0 <= 2; c0 += 1) { diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule.ll b/polly/test/IstAstInfo/reduction_modulo_schedule.ll index 8bdd5299986eb..c39ffa591484d 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-import-jscop -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel reduction (+ : MemRef_A) ; CHECK-NEXT: for (int c0 = 0; c0 <= 2; c0 += 1) { diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll index 4811069e4f399..266753555cab1 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK: #pragma known-parallel ; CHECK: for (int c0 = 0; c0 <= 1; c0 += 1) diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll index 4f5ac24a0b005..d7f9029fd347a 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; Verify that the outer dimension doesn't carry reduction dependences ; diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll index 472a04847ec95..f18060a2e20a8 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; Verify that the outer dimension doesn't carry reduction dependences ; diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll index 2cc911d78234b..8e2a590c5f57c 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; Verify that the outer dimension doesn't carry reduction dependences ; diff --git a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll index 1b2d0eb75c12c..b889db4819cd5 100644 --- a/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll +++ b/polly/test/IstAstInfo/reduction_modulo_schedule_multiple_dimensions_5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; Verify that only the outer dimension needs privatization ; diff --git a/polly/test/IstAstInfo/reduction_multiple_dimensions.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions.ll index 884cea7918031..2a8fd7a4f670e 100644 --- a/polly/test/IstAstInfo/reduction_multiple_dimensions.ll +++ b/polly/test/IstAstInfo/reduction_multiple_dimensions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK-NOT:#pragma known-parallel reduction ; CHECK: #pragma known-parallel diff --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll index 013a7d4f3ad27..25f2fa597e34e 100644 --- a/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll +++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK-NOT:#pragma known-parallel reduction ; CHECK: #pragma known-parallel diff --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll index 2dc6d8680b36a..0d6be9a9da9bf 100644 --- a/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll +++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK-NOT:#pragma known-parallel reduction ; CHECK: #pragma known-parallel diff --git a/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll b/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll index dcd75945d25a8..8b537513cc8d7 100644 --- a/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll +++ b/polly/test/IstAstInfo/reduction_multiple_dimensions_4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s ; ; CHECK-NOT:#pragma known-parallel reduction ; CHECK: #pragma known-parallel diff --git a/polly/test/IstAstInfo/run-time-condition.ll b/polly/test/IstAstInfo/run-time-condition.ll index 67fc4b74571da..44d3534f651ce 100644 --- a/polly/test/IstAstInfo/run-time-condition.ll +++ b/polly/test/IstAstInfo/run-time-condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s ; for (i = 0; i < 1024; i++) ; A[i] = B[i]; diff --git a/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll b/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll index d674f429c0d48..aef509a865b6a 100644 --- a/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll +++ b/polly/test/IstAstInfo/runtime_context_with_error_blocks.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s ; ; Verify we do not simplify the runtime check to "true" due to the domain ; constraints as the test contains an error block that influenced the domains diff --git a/polly/test/IstAstInfo/simple-run-time-condition.ll b/polly/test/IstAstInfo/simple-run-time-condition.ll index 73a7c596cea0b..488cd180b899a 100644 --- a/polly/test/IstAstInfo/simple-run-time-condition.ll +++ b/polly/test/IstAstInfo/simple-run-time-condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-precise-inbounds -polly-precise-fold-accesses -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-precise-inbounds -polly-precise-fold-accesses -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" diff --git a/polly/test/IstAstInfo/single_loop_strip_mine.ll b/polly/test/IstAstInfo/single_loop_strip_mine.ll index f546972fb370c..afe6179188c01 100644 --- a/polly/test/IstAstInfo/single_loop_strip_mine.ll +++ b/polly/test/IstAstInfo/single_loop_strip_mine.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-ast-print-accesses -polly-ast-detect-parallel '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=CHECK-VECTOR +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-ast-print-accesses -polly-ast-detect-parallel '-passes=polly-import-jscop,print' -disable-output < %s | FileCheck %s -check-prefix=CHECK-VECTOR ; for (i = 0; i < 1024; i++) ; A[i] = B[i]; diff --git a/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll b/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll index c9ae9e8f4e52e..f614f90fc3fc9 100644 --- a/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll +++ b/polly/test/IstAstInfo/single_loop_uint_max_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; XFAIL: * ;#include "limits.h" diff --git a/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll b/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll index 45227160e8699..e91ea13278692 100644 --- a/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll +++ b/polly/test/IstAstInfo/single_loop_ull_max_iterations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s ; XFAIL: * ;#include "limits.h" diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll index 28b6a7ca12799..49a962592bb9d 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Bad-relation.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: expecting other token ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll index f19a632815795..749b962b260f5 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-No-accesses-key.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: Statement from JScop file has no key name 'accesses' for index 1. ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll index 77b9acfbb0989..1d97e3ebca625 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-MemAcc.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: The number of memory accesses in the JSop file and the number of memory accesses differ for index 0. ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll index 0a06ff671c298..f4b739398f9f6 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Not-enough-statements.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: The number of indices and the number of statements differ. ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll index 35b7af098ae42..1f5cda3518a2f 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Relation-mispelled.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: Memory access number 0 has no key name 'relation' for statement number 1. ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll index 109665a85c607..0c750849b51eb 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Statements-mispelled.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: JScop file has no key name 'statements'. ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll index f345d1c31796e..d8c9c3f4ab2ea 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Undeclared-ScopArrayInfo.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: JScop file contains access function with undeclared ScopArrayInfo ; diff --git a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll index a66d5c8c69b55..f8d7cb8c1453e 100644 --- a/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll +++ b/polly/test/JSONExporter/ImportAccesses/ImportAccesses-Wrong-number-dimensions.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: JScop file changes the number of parameter dimensions. ; diff --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll index ae0b4edffb5fc..6e13a5e413d76 100644 --- a/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll +++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-Mispelled-type.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s + ; RUN: not --crash opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Array has not a valid type. ; diff --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll index 6c434e15a38d2..7f6578776e0bd 100644 --- a/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll +++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-Negative-size.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s +; RUN: not --crash opt %loadNPMPolly -polly-stmt-granularity=bb -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s ; ; #define Ni 1056 ; #define Nj 1056 diff --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll index b004c4725176a..e698bdc488c2c 100644 --- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll +++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-name.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s +; RUN: not --crash opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Array has no key 'name'. ; diff --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll index 5f62a457f63eb..f130b6556e3e5 100644 --- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll +++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-sizes-key.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s +; RUN: not --crash opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Array has no key 'sizes'. ; diff --git a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll index 029fde10f5a4a..68d2e50c6730d 100644 --- a/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll +++ b/polly/test/JSONExporter/ImportArrays/ImportArrays-No-type-key.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s +; RUN: not --crash opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Array has no key 'type'. ; diff --git a/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll index 9ac371b655146..94c77dc2a0138 100644 --- a/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll +++ b/polly/test/JSONExporter/ImportContext/ImportContext-Context-mispelled.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: JScop file has no key named 'context'. ; diff --git a/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll index 82afcd95c871f..c20d5c02d662e 100644 --- a/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll +++ b/polly/test/JSONExporter/ImportContext/ImportContext-Not-parameter-set.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: The isl_set is not a parameter set. ; diff --git a/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll index 0308452c6f955..92f4d61212e93 100644 --- a/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll +++ b/polly/test/JSONExporter/ImportContext/ImportContext-Unvalid-Context.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: unexpected isl_token ; diff --git a/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll b/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll index debb9bc604110..89668d8d573b1 100644 --- a/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll +++ b/polly/test/JSONExporter/ImportContext/ImportContext-Wrong-dimension.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: Imported context has the wrong number of parameters : Found 2 Expected 1 ; diff --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll index 6eee0056ba0b5..efe15c14ce90d 100644 --- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll +++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-No-schedule-key.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: Statement 0 has no 'schedule' key. ; diff --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll index 59feb0085e6de..db516f6d7d335 100644 --- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll +++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Schedule-not-valid.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: expecting other token ; diff --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll index 78d5243d34e00..b93c984d7d9dd 100644 --- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll +++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Statements-mispelled.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: JScop file has no key name 'statements'. ; diff --git a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll index 877547c8f317f..3fa14c64cd639 100644 --- a/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll +++ b/polly/test/JSONExporter/ImportSchedule/ImportSchedule-Wrong-number-statements.ll @@ -1,4 +1,4 @@ -; RUN: not --crash opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s +; RUN: not --crash opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-ast-detect-parallel -disable-output < %s 2>&1 >/dev/null | FileCheck %s ; ; CHECK: The number of indices and the number of statements differ. ; diff --git a/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll b/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll index 9f999204f59bf..1d81ff7ef2dc8 100644 --- a/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll +++ b/polly/test/MaximalStaticExpansion/load_after_store_same_statement.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that the expansion of an array with load after store in a same statement is not done. ; diff --git a/polly/test/MaximalStaticExpansion/read_from_original.ll b/polly/test/MaximalStaticExpansion/read_from_original.ll index 1a733c113626d..57017381c661a 100644 --- a/polly/test/MaximalStaticExpansion/read_from_original.ll +++ b/polly/test/MaximalStaticExpansion/read_from_original.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that Polly detects problems and does not expand the array ; diff --git a/polly/test/MaximalStaticExpansion/too_many_writes.ll b/polly/test/MaximalStaticExpansion/too_many_writes.ll index a7aa162aa83da..7e33de17a1749 100644 --- a/polly/test/MaximalStaticExpansion/too_many_writes.ll +++ b/polly/test/MaximalStaticExpansion/too_many_writes.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that Polly detects problems and does not expand the array ; diff --git a/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll b/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll index 06e08c43e3492..355fc02600d54 100644 --- a/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll +++ b/polly/test/MaximalStaticExpansion/working_deps_between_inners.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s ; ; Verify that the accesses are correctly expanded for MemoryKind::Array ; diff --git a/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll b/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll index 076f47143dbcc..930539547cc97 100644 --- a/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll +++ b/polly/test/MaximalStaticExpansion/working_deps_between_inners_phi.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that the accesses are correctly expanded for MemoryKind::Array and MemoryKind::PHI. ; tmp_06_phi is not expanded because it need copy in. diff --git a/polly/test/MaximalStaticExpansion/working_expansion.ll b/polly/test/MaximalStaticExpansion/working_expansion.ll index 2b040f3f1f4e3..a055e50225e91 100644 --- a/polly/test/MaximalStaticExpansion/working_expansion.ll +++ b/polly/test/MaximalStaticExpansion/working_expansion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s ; ; Verify that the accesses are correctly expanded for MemoryKind::Array ; diff --git a/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll b/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll index f863c0e1d6edf..77338c9aac200 100644 --- a/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll +++ b/polly/test/MaximalStaticExpansion/working_expansion_multiple_dependences_per_statement.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output < %s | FileCheck %s ; ; Verify that the accesses are correctly expanded ; diff --git a/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll b/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll index a823bdb4e7682..9cfa5536072b7 100644 --- a/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll +++ b/polly/test/MaximalStaticExpansion/working_expansion_multiple_instruction_per_statement.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output < %s | FileCheck %s ; ; Verify that the accesses are correctly expanded ; diff --git a/polly/test/MaximalStaticExpansion/working_phi_expansion.ll b/polly/test/MaximalStaticExpansion/working_phi_expansion.ll index 0898f99c896d4..63e4d48046275 100644 --- a/polly/test/MaximalStaticExpansion/working_phi_expansion.ll +++ b/polly/test/MaximalStaticExpansion/working_phi_expansion.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that the accesses are correctly expanded for MemoryKind::PHI ; tmp_04 is not expanded because it need copy-in. diff --git a/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll b/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll index 2a332ba7ce77b..87bd57abab8d1 100644 --- a/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll +++ b/polly/test/MaximalStaticExpansion/working_phi_two_scalars.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-mse -pass-remarks-analysis=polly-mse -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -pass-remarks-analysis="polly-mse" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=MSE ; ; Verify that the accesses are correctly expanded for MemoryKind::PHI ; tmp_05 and tmp2_06 are not expanded because they need copy-in. diff --git a/polly/test/MaximalStaticExpansion/working_value_expansion.ll b/polly/test/MaximalStaticExpansion/working_value_expansion.ll index 77f20bb163a8b..cc28a78c38671 100644 --- a/polly/test/MaximalStaticExpansion/working_value_expansion.ll +++ b/polly/test/MaximalStaticExpansion/working_value_expansion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-mse -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output < %s | FileCheck %s ; ; Verify that the accesses are correctly expanded for MemoryKind::Value ; diff --git a/polly/test/PruneUnprofitable/prune_only_scalardeps.ll b/polly/test/PruneUnprofitable/prune_only_scalardeps.ll index b4524c21a35ee..9cc2aecf002dd 100644 --- a/polly/test/PruneUnprofitable/prune_only_scalardeps.ll +++ b/polly/test/PruneUnprofitable/prune_only_scalardeps.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=false '-passes=polly-custom' -disable-output -stats < %s 2>&1 | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=false "-passes=scop(polly-prune-unprofitable)" -disable-output -stats < %s 2>&1 | FileCheck -match-full-lines %s ; REQUIRES: asserts ; ; Skip this SCoP for having scalar dependencies between all statements, diff --git a/polly/test/ScheduleOptimizer/2012-03-16-Empty-Domain.ll b/polly/test/ScheduleOptimizer/2012-03-16-Empty-Domain.ll index c8c006c94d1d4..38facb1688c46 100644 --- a/polly/test/ScheduleOptimizer/2012-03-16-Empty-Domain.ll +++ b/polly/test/ScheduleOptimizer/2012-03-16-Empty-Domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -S < %s target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32" define void @sdbout_label() nounwind { diff --git a/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll b/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll index 23033faa380af..835986049899b 100644 --- a/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll +++ b/polly/test/ScheduleOptimizer/2013-04-11-Empty-Domain-two.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -S < %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -S < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Check that we handle statements with an empty iteration domain correctly. diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll index fdaed3c543673..5e4ce8225a236 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-double.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll index 65d495722c2bd..de4c387a1d879 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-first.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll index 06d55f46a977f..91bd549c3c7e4 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-except-third.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll index 0af703ccf5ffe..8b69d9e12c0fe 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-carried.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,OPT define void @func(i32 %n, ptr noalias nonnull %A) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll index ca6840b900e7f..49d1124740340 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner-third.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefixes=CHECK +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK,RAW +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefixes=CHECK define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll index f96e4baba71eb..a449a2fda9ba3 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-inner.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s define void @func(i32 %n, ptr noalias nonnull %A) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll index 229d13aaf1a4d..798e9b9a7c14f 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/fuse-simple.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s define void @func(i32 %n, ptr noalias nonnull %A) { entry: diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll index 9bc9a25ac588e..4d0ccc988a5cc 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-simple.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s ; This could theoretically be fused by adjusting the offset of the second loop by %k (instead of relying on schedule dimensions). diff --git a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll index 5b0cefbe686f6..bf470b91a7022 100644 --- a/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll +++ b/polly/test/ScheduleOptimizer/GreedyFuse/nofuse-with-middle.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=1 -polly-loopfusion-greedy=1 -polly-postopts=0 '-passes=print' -disable-output < %s | FileCheck %s define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %k) { entry: diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll b/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll index 2225f05f6717d..b0f75dd50ef83 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/disable_nonforced.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Check that the disable_nonforced metadata is honored; optimization ; heuristics/rescheduling must not be applied. diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll index 4add219214aa3..900360d7533f8 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_heuristic.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-pragma-based-opts=1 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=ON -; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-pragma-based-opts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=OFF +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-pragma-based-opts=1 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=ON +; RUN: opt %loadNPMPolly -polly-reschedule=0 -polly-pragma-based-opts=0 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines --check-prefix=OFF ; define void @func(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B) { entry: diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll index d59f9e58e2785..d45b62433dbbc 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_looploc.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-reschedule=0 -polly-pragma-based-opts=1 -disable-output < %s 2>&1 | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-reschedule=0 -polly-pragma-based-opts=1 -disable-output < %s 2>&1 | FileCheck %s --match-full-lines ; ; CHECK: warning: distribute_illegal.c:2:3: not applying loop fission/distribution: cannot ensure semantic equivalence due to possible dependency violations ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll index a1caaf5db5a61..d835e66693fb4 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/distribute_illegal_pragmaloc.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-reschedule=0 -polly-pragma-based-opts=1 -disable-output < %s 2>&1 | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-reschedule=0 -polly-pragma-based-opts=1 -disable-output < %s 2>&1 | FileCheck %s --match-full-lines ; ; CHECK: warning: distribute_illegal.c:1:42: not applying loop fission/distribution: cannot ensure semantic equivalence due to possible dependency violations ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll index b05710203fd37..a5781a7f60365 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_disable.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines ; ; Override unroll metadata with llvm.loop.unroll.disable. ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll index 8992bc942646e..cccf136a1c4ac 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_double.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines ; ; Apply two loop transformations. First partial, then full unrolling. ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll index 7bea96f791a80..4d499078a4364 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_full.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines ; ; Full unroll of a loop with 5 iterations. ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll index 34a6f486e646c..d67472ab86936 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_heuristic.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines -; RUN: opt %loadNPMPolly -polly-pragma-based-opts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -polly-pragma-based-opts=0 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines ; ; Unrolling with heuristic factor. ; Currently not supported and expected to be handled by LLVM's unroll pass. diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll index ce2281372a20d..90101b4fde390 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --match-full-lines -; RUN: opt %loadNPMPolly -polly-pragma-based-opts=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefix=OFF --match-full-lines +; RUN: opt %loadNPMPolly -polly-pragma-based-opts=1 '-passes=print' -disable-output < %s | FileCheck %s --match-full-lines +; RUN: opt %loadNPMPolly -polly-pragma-based-opts=0 '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=OFF --match-full-lines ; ; Partial unroll by a factor of 4. ; diff --git a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll index f6810ba6c48fb..4cfa3fb911515 100644 --- a/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll +++ b/polly/test/ScheduleOptimizer/ManualOptimization/unroll_partial_followup.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s --check-prefix=OPT --match-full-lines -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST --match-full-lines -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=OPT --match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s --check-prefix=AST --match-full-lines +; RUN: opt %loadNPMPolly '-passes=scop(polly-opt-isl,polly-codegen),simplifycfg' -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; Partial unroll by a factor of 4. ; @@ -54,6 +54,6 @@ return: ; AST-NEXT: for (int c0 = 0; c0 < n; c0 += 4) { -; CODEGEN: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit, !llvm.loop ![[LOOPID:[0-9]+]] +; CODEGEN: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.exiting, !llvm.loop ![[LOOPID:[0-9]+]] ; CODEGEN: ![[LOOPID]] = distinct !{![[LOOPID]], ![[LOOPNAME:[0-9]+]]} ; CODEGEN: ![[LOOPNAME]] = !{!"llvm.loop.id", !"This-is-the-unrolled-loop"} diff --git a/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll b/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll index b03d475dd42ee..3f6f50e34775d 100644 --- a/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll +++ b/polly/test/ScheduleOptimizer/SIMDInParallelFor.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-parallel -polly-vectorizer=stripmine -passes=polly-codegen-verify '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-parallel -polly-vectorizer=stripmine -passes=polly-codegen-verify '-passes=polly-opt-isl,print,polly-codegen' -disable-output < %s | FileCheck %s ; ; Check that there are no nested #pragma omp parallel for inside a ; #pragma omp parallel for loop. diff --git a/polly/test/ScheduleOptimizer/computeout.ll b/polly/test/ScheduleOptimizer/computeout.ll index 6f34f4efc0a6d..a3286b481ffb3 100644 --- a/polly/test/ScheduleOptimizer/computeout.ll +++ b/polly/test/ScheduleOptimizer/computeout.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-isl-arg=--no-schedule-serialize-sccs -disable-output < %s | FileCheck %s -; RUN: opt -S %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-isl-arg=--no-schedule-serialize-sccs -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT +; RUN: opt -S %loadNPMPolly "-passes=scop(polly-opt-isl,print)" -polly-isl-arg=--no-schedule-serialize-sccs -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly "-passes=scop(polly-opt-isl,print)" -polly-isl-arg=--no-schedule-serialize-sccs -polly-dependences-computeout=1 -disable-output < %s | FileCheck %s -check-prefix=TIMEOUT target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; for(i = 0; i < 100; i++ ) diff --git a/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll b/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll index 4be0b948d09a0..928ee858ae6d2 100644 --- a/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll +++ b/polly/test/ScheduleOptimizer/ensure-correct-tile-sizes.ll @@ -1,4 +1,9 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable -polly-remarks-minimal '-passes=polly-custom' -polly-print-ast -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=1 -polly-target-vector-register-bitwidth=4096 -polly-target-1st-cache-level-associativity=3 -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable -polly-remarks-minimal \ +; RUN: '-passes=polly-opt-isl,print' -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=1 \ +; RUN: -polly-target-vector-register-bitwidth=4096 \ +; RUN: -polly-target-1st-cache-level-associativity=3 -disable-output < %s | FileCheck %s ; ; /* Test that Polly does not crash due to configurations that can lead to ; incorrect tile size computations. diff --git a/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll b/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll index 548a8aa94afbf..b533cb870bdcb 100644 --- a/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll +++ b/polly/test/ScheduleOptimizer/focaltech_test_detail_threshold-7bc17e.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-opt-isl -polly-vectorizer=stripmine -polly-invariant-load-hoisting -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -polly-vectorizer=stripmine -polly-invariant-load-hoisting -disable-output < %s | FileCheck %s ; ; llvm.org/PR46578 ; diff --git a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll index 6de5e3a606aa3..3dd579ed736f7 100644 --- a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll +++ b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll @@ -1,4 +1,4 @@ -; RUN: opt -S %loadNPMPolly -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; CHECK: // 1st level tiling - Tiles ; CHECK-NEXT: #pragma known-parallel ; CHECK-NEXT: for (int c0 = 0; c0 <= floord(ni - 1, 32); c0 += 1) diff --git a/polly/test/ScheduleOptimizer/line-tiling-2.ll b/polly/test/ScheduleOptimizer/line-tiling-2.ll index 6256adfcd6917..3a2c566d19d3d 100644 --- a/polly/test/ScheduleOptimizer/line-tiling-2.ll +++ b/polly/test/ScheduleOptimizer/line-tiling-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-tile-sizes=1,64 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-tile-sizes=1,64 '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; CHECK: for (int c0 = 0; c0 <= 1023; c0 += 1) ; CHECK: for (int c1 = 0; c1 <= 7; c1 += 1) diff --git a/polly/test/ScheduleOptimizer/line-tiling.ll b/polly/test/ScheduleOptimizer/line-tiling.ll index 51e02594aa880..0dbdeff4742b9 100644 --- a/polly/test/ScheduleOptimizer/line-tiling.ll +++ b/polly/test/ScheduleOptimizer/line-tiling.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-tile-sizes=64,1 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-tile-sizes=64,1 '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; CHECK: for (int c0 = 0; c0 <= 15; c0 += 1) ; CHECK: for (int c1 = 0; c1 <= 511; c1 += 1) diff --git a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll index 79deedc7cd830..8f270b94617fe 100644 --- a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll +++ b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout.ll @@ -1,4 +1,13 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-2nd-cache-level-size=262144 -polly-optimized-scops -polly-target-vector-register-bitwidth=256 -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -polly-optimized-scops \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -disable-output < %s ; ; /* C := alpha*A*B + beta*C */ ; for (i = 0; i < _PB_NI; i++) diff --git a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll index e3ae1a02bd347..de1c815f92350 100644 --- a/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll +++ b/polly/test/ScheduleOptimizer/mat_mul_pattern_data_layout_2.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-2nd-cache-level-size=262144 -polly-target-vector-register-bitwidth=256 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; /* C := alpha*A*B + beta*C */ ; /* _PB_NK % Kc != 0 */ diff --git a/polly/test/ScheduleOptimizer/one-dimensional-band.ll b/polly/test/ScheduleOptimizer/one-dimensional-band.ll index f37f1e5119a9f..a097d4a43cfd2 100644 --- a/polly/test/ScheduleOptimizer/one-dimensional-band.ll +++ b/polly/test/ScheduleOptimizer/one-dimensional-band.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; void jacobi1d(long T, long N, float *A, float *B) { ; long t, i, j; diff --git a/polly/test/ScheduleOptimizer/outer_coincidence.ll b/polly/test/ScheduleOptimizer/outer_coincidence.ll index e0a7a63cda80d..7c1af80c9ffae 100644 --- a/polly/test/ScheduleOptimizer/outer_coincidence.ll +++ b/polly/test/ScheduleOptimizer/outer_coincidence.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-tiling=0 -polly-parallel -polly-opt-outer-coincidence=no '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-tiling=0 -polly-parallel -polly-opt-outer-coincidence=yes '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=OUTER +; RUN: opt %loadNPMPolly -polly-tiling=0 -polly-parallel -polly-opt-outer-coincidence=no '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-tiling=0 -polly-parallel -polly-opt-outer-coincidence=yes '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s --check-prefix=OUTER ; By skewing, the diagonal can be made parallel. ISL does this when the Check ; the 'outer_coincidence' option is enabled. diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll index 84f1ca0dba652..a19b93d9915dd 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm.ll @@ -1,4 +1,8 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true '-passes=polly-custom' -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly \ +; RUN: -polly-pattern-matching-based-opts=true \ +; RUN: '-passes=polly-optree,polly-delicm,polly-simplify,polly-opt-isl' \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s ; REQUIRES: asserts ; Check that the pattern matching detects the matrix multiplication pattern diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll index 72fb4f1b4e41c..4ef0605a0ba75 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts-after-delicm_2.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-delicm,polly-simplify,polly-opt-isl' \ +; RUN: -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; Check that the pattern matching detects the tensor contraction pattern diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll index 933b2d4d258e7..09118e252233b 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll @@ -1,7 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=false -debug -polly-tc-opt -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -debug -polly-tc-opt -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PATTERN-MATCHING-OPTS -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-pattern-matching-based-opts=true -polly-ast-detect-parallel -disable-output < %s | FileCheck %s --check-prefix=PARALLEL-AST -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -stats -disable-output < %s 2>&1 | FileCheck %s --check-prefix=STATS -match-full-lines +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=false \ +; RUN: -debug -polly-tc-opt -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true -debug -polly-tc-opt -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PATTERN-MATCHING-OPTS +; RUN: opt %loadNPMPolly '-passes=polly-opt-isl,print' -polly-pattern-matching-based-opts=true -polly-ast-detect-parallel -disable-output < %s | FileCheck %s --check-prefix=PARALLEL-AST +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true -stats -disable-output < %s 2>&1 | FileCheck %s --check-prefix=STATS -match-full-lines ; REQUIRES: asserts ; ; /* C := alpha*A*B + beta*C */ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll index 03e23038877e5..b771d1f87537e 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_11.ll @@ -1,4 +1,16 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-import-jscop-postfix=transformed -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 -debug -polly-tc-opt=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-opt-isl' \ +; RUN: -polly-import-jscop-postfix=transformed \ +; RUN: -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -debug \ +; RUN: -polly-tc-opt=true -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s ; REQUIRES: asserts ; ; Check that the pattern matching detects the matrix multiplication pattern diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll index 4e174e3c9723d..238f6dd798e68 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_12.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -passes=polly-opt-isl -disable-output < %s ; ; Test whether isolation works as expected. ; diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll index c3d8b6ed3fee5..0e4540eb7ba3c 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_13.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=2 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=128 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=2 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=128 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; Test whether isolation works as expected. ; diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll index 3705c3fd27ed9..9678ad83ff048 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_14.ll @@ -1,4 +1,13 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-opt-isl,polly-codegen' \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -polly-import-jscop-postfix=transformed -S < %s \ +; RUN: | FileCheck %s ; ; Check that we disable the Loop Vectorizer. ; diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll index 7ada105828b27..e74884d59c311 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -debug-only=polly-opt-isl -disable-output -polly-tc-opt=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -debug-only=polly-opt-isl -disable-output \ +; RUN: -polly-tc-opt=true < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < _PB_NI; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll index 6647380b2d070..9c99a090b69e7 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_16.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 1024; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll index fba77d5e4f82d..8e14035ce8629 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_17.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 32; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll index 488436064ae83..4f562c306f96a 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_18.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 32; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll index c7a5d475bef31..32ded897d4ff9 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_19.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 8; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll index 1dba8bece8072..f0c0177da84b0 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; /* C := alpha*A*B + beta*C */ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll index 3656a9457cef2..155177bdfade0 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_20.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 16; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll index bd0cb054957af..3d21ac3859a7e 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_21.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (int i = 0; i < 32; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll index 6e6788be2973f..00a4bf885aef8 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_22.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (int i = 0; i < 32; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll index 82356ae0a398d..bfe5c5249a3a8 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_24.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-reschedule=0 '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-reschedule=0 -passes=polly-opt-isl \ +; RUN: -polly-pattern-matching-based-opts=true -polly-tc-opt=true \ +; RUN: -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (i = 0; i < 1024; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll index ea28bb8c0bdb6..a2e1ced3e6320 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_25.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -polly-tc-opt=true -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; for (int i = 0; i < 32; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll index f80d63cd4d66c..9844d377e609d 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll @@ -1,6 +1,19 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-size=0 -polly-target-vector-register-bitwidth=256 '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-size=0 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=EXTRACTION-OF-MACRO-KERNEL +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=EXTRACTION-OF-MACRO-KERNEL ; ; /* C := alpha*A*B + beta*C */ ; for (i = 0; i < _PB_NI; i++) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll index 100b17e2ccd21..250641d57bac5 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_4.ll @@ -1,5 +1,13 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-pattern-matching-based-opts=true -debug -polly-tc-opt=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 -polly-tc-opt=true -disable-output < %s | FileCheck %s --check-prefix=PATTERN-MATCHING-OPTS +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ +; RUN: -debug -polly-tc-opt=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-opt-isl,print' -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -polly-tc-opt=true -disable-output < %s | \ +; RUN: FileCheck %s --check-prefix=PATTERN-MATCHING-OPTS ; REQUIRES: asserts ; ; C := A * B + C diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll index 050af1b2377d3..ad2c195ba1e8e 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_5.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ ; -polly-target-throughput-vector-fma=1 \ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll index ba1ddfef6a4e4..1d3cdbdbfdd85 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_6.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; opt %loadNPMPolly -passes=polly-opt-isl -polly-pattern-matching-based-opts=true \ ; -polly-target-throughput-vector-fma=1 \ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll index e50b3a0a3f2b0..59eaa4a0928e9 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_7.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; /* C := A * B + C */ ; /* Elements of the matrices A, B, C have the float type. */ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll index 3f57fe8cf6c73..2544d502a2dc5 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_8.ll @@ -1,4 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; /* C := A * B + C */ ; /* Elements of the matrices B, C have the double type. */ diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll index b87ed4fb1ec3c..85c143562f5af 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_9.ll @@ -1,6 +1,14 @@ -; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true -polly-target-throughput-vector-fma=1 -polly-target-latency-vector-fma=8 -polly-target-1st-cache-level-associativity=8 -polly-target-2nd-cache-level-associativity=8 -polly-target-1st-cache-level-size=32768 -polly-target-vector-register-bitwidth=256 -polly-target-2nd-cache-level-size=262144 '-passes=polly-custom' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-pattern-matching-based-opts=true \ +; RUN: -polly-target-throughput-vector-fma=1 \ +; RUN: -polly-target-latency-vector-fma=8 \ +; RUN: -polly-target-1st-cache-level-associativity=8 \ +; RUN: -polly-target-2nd-cache-level-associativity=8 \ +; RUN: -polly-target-1st-cache-level-size=32768 \ +; RUN: -polly-target-vector-register-bitwidth=256 \ +; RUN: -polly-target-2nd-cache-level-size=262144 \ +; RUN: -passes=polly-opt-isl -disable-output < %s ; -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-deps -disable-output < %s | FileCheck %s --check-prefix=DEPENDENCES +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=DEPENDENCES ; ; /* C := A * B + C */ ; /* Elements of the matrices A, B, C have the char type. */ diff --git a/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll b/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll index 98c1db6d36fbe..64285891a16c7 100644 --- a/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll +++ b/polly/test/ScheduleOptimizer/pattern_matching_based_opts_splitmap.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-import-jscop-postfix=transformed '-passes=polly-custom' -debug-only=polly-opt-isl -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-import-jscop -polly-import-jscop-postfix=transformed -passes=polly-opt-isl -debug-only=polly-opt-isl -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; ; void pattern_matching_based_opts_splitmap(double C[static const restrict 2][2], double A[static const restrict 2][784], double B[static const restrict 784][2]) { diff --git a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll index 4784dc88cd307..1c6d289744e39 100644 --- a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll +++ b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll @@ -1,4 +1,4 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-tiling=false -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-tiling=false -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" @C = common global [1536 x [1536 x float]] zeroinitializer, align 16 diff --git a/polly/test/ScheduleOptimizer/prevectorization.ll b/polly/test/ScheduleOptimizer/prevectorization.ll index 6d1592c4ba8fa..1ff20d165ce5e 100644 --- a/polly/test/ScheduleOptimizer/prevectorization.ll +++ b/polly/test/ScheduleOptimizer/prevectorization.ll @@ -1,5 +1,5 @@ -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine -polly-prevect-width=16 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=VEC16 +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s +; RUN: opt -S %loadNPMPolly -aa-pipeline=basic-aa -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine -polly-prevect-width=16 '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s -check-prefix=VEC16 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScheduleOptimizer/prevectorization_islbound.ll b/polly/test/ScheduleOptimizer/prevectorization_islbound.ll index f346e5365b198..0bc3c2cf642e8 100644 --- a/polly/test/ScheduleOptimizer/prevectorization_islbound.ll +++ b/polly/test/ScheduleOptimizer/prevectorization_islbound.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S -polly-vectorizer=stripmine '-passes=polly-custom' -polly-debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -polly-vectorizer=stripmine -passes=polly-opt-isl -polly-debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts define void @ham(ptr %arg, ptr %arg1, i32 %arg2, i32 %arg3, ptr %arg4, i32 %arg5, i32 %arg6) { diff --git a/polly/test/ScheduleOptimizer/rectangular-tiling.ll b/polly/test/ScheduleOptimizer/rectangular-tiling.ll index 3fd4907909419..e1d768b351d7d 100644 --- a/polly/test/ScheduleOptimizer/rectangular-tiling.ll +++ b/polly/test/ScheduleOptimizer/rectangular-tiling.ll @@ -1,7 +1,7 @@ -; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s -; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-tiling=false '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=NOTILING -; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-2nd-level-tiling -polly-2nd-level-tile-sizes=16,8 '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=TWOLEVEL -; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-2nd-level-tiling -polly-2nd-level-tile-sizes=16,8 -polly-register-tiling '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=TWO-PLUS-REGISTER +; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-tiling=false '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s --check-prefix=NOTILING +; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-2nd-level-tiling -polly-2nd-level-tile-sizes=16,8 '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s --check-prefix=TWOLEVEL +; RUN: opt %loadNPMPolly -polly-tile-sizes=256,16 -polly-2nd-level-tiling -polly-2nd-level-tile-sizes=16,8 -polly-register-tiling '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s --check-prefix=TWO-PLUS-REGISTER ; CHECK: // 1st level tiling - Tiles ; CHECK: for (int c0 = 0; c0 <= 3; c0 += 1) diff --git a/polly/test/ScheduleOptimizer/schedule_computeout.ll b/polly/test/ScheduleOptimizer/schedule_computeout.ll index 1ee8a90473bd3..1e1359e3ecc6a 100644 --- a/polly/test/ScheduleOptimizer/schedule_computeout.ll +++ b/polly/test/ScheduleOptimizer/schedule_computeout.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -S '-passes=polly-custom' -polly-schedule-computeout=10000 -debug-only=polly-opt-isl < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-optree -passes=polly-delicm -passes=polly-opt-isl -polly-schedule-computeout=10000 -debug-only="polly-opt-isl" < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; Bailout if the computations of schedule compute exceeds the max scheduling quota. diff --git a/polly/test/ScheduleOptimizer/statistics.ll b/polly/test/ScheduleOptimizer/statistics.ll index bb705ac6abf38..84eb59341d273 100644 --- a/polly/test/ScheduleOptimizer/statistics.ll +++ b/polly/test/ScheduleOptimizer/statistics.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -stats -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -passes=polly-opt-isl -stats -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; REQUIRES: asserts diff --git a/polly/test/ScheduleOptimizer/tile_after_fusion.ll b/polly/test/ScheduleOptimizer/tile_after_fusion.ll index e3d7c24ebef77..50a46d66176ea 100644 --- a/polly/test/ScheduleOptimizer/tile_after_fusion.ll +++ b/polly/test/ScheduleOptimizer/tile_after_fusion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-isl-arg=--no-schedule-serialize-sccs '-passes=polly-custom' -polly-print-ast -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-isl-arg=--no-schedule-serialize-sccs '-passes=polly-opt-isl,print' -disable-output < %s | FileCheck %s ; ; ; void tf(int C[256][256][256], int A0[256][256][256], int A1[256][256][256]) { diff --git a/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll b/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll index bb472b9c3763f..e59a31665d77b 100644 --- a/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll +++ b/polly/test/ScheduleOptimizer/vivid-vbi-gen-vivid_vbi_gen_sliced-before-llvmreduced.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-vectorizer=stripmine -polly-isl-arg=--no-schedule-serialize-sccs -polly-tiling=0 '-passes=polly-custom' -polly-print-opt-isl -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-vectorizer=stripmine -polly-isl-arg=--no-schedule-serialize-sccs -polly-tiling=0 '-passes=print' -disable-output < %s | FileCheck %s ; isl_schedule_node_band_sink may sink into multiple children. ; https://llvm.org/PR52637 diff --git a/polly/test/ScopDetect/aliasing_parametric_simple_1.ll b/polly/test/ScopDetect/aliasing_parametric_simple_1.ll index d83c822371b6e..cee1c06cf7aa0 100644 --- a/polly/test/ScopDetect/aliasing_parametric_simple_1.ll +++ b/polly/test/ScopDetect/aliasing_parametric_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: ; diff --git a/polly/test/ScopDetect/aliasing_parametric_simple_2.ll b/polly/test/ScopDetect/aliasing_parametric_simple_2.ll index 63c9addd0b6e1..5506b3c626cfd 100644 --- a/polly/test/ScopDetect/aliasing_parametric_simple_2.ll +++ b/polly/test/ScopDetect/aliasing_parametric_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: ; diff --git a/polly/test/ScopDetect/aliasing_simple_1.ll b/polly/test/ScopDetect/aliasing_simple_1.ll index ea8a7688f3d25..5f43ec1856a7f 100644 --- a/polly/test/ScopDetect/aliasing_simple_1.ll +++ b/polly/test/ScopDetect/aliasing_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: ; diff --git a/polly/test/ScopDetect/aliasing_simple_2.ll b/polly/test/ScopDetect/aliasing_simple_2.ll index df68289ff7352..e853dfcc64485 100644 --- a/polly/test/ScopDetect/aliasing_simple_2.ll +++ b/polly/test/ScopDetect/aliasing_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: ; diff --git a/polly/test/ScopDetect/base_pointer.ll b/polly/test/ScopDetect/base_pointer.ll index 0f0e219bd90d1..e500f9bc20bc6 100644 --- a/polly/test/ScopDetect/base_pointer.ll +++ b/polly/test/ScopDetect/base_pointer.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly --aa-pipeline= -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-detect -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -disable-basic-aa -polly-invariant-load-hoisting=true -polly-print-detect -disable-output < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" diff --git a/polly/test/ScopDetect/base_pointer_load_setNewAccessRelation.ll b/polly/test/ScopDetect/base_pointer_load_setNewAccessRelation.ll index b00ec77679063..eeb9e11f812c3 100644 --- a/polly/test/ScopDetect/base_pointer_load_setNewAccessRelation.ll +++ b/polly/test/ScopDetect/base_pointer_load_setNewAccessRelation.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true '-passes=polly' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true '-passes=print,scop(polly-import-jscop,polly-codegen)' -disable-output < %s 2>&1 | FileCheck %s ; ; This violated an assertion in setNewAccessRelation that assumed base pointers ; to be load-hoisted. Without this assertion, it codegen would generate invalid diff --git a/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll b/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll index 1cd04b639fc99..16976e6313275 100644 --- a/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll +++ b/polly/test/ScopDetect/base_pointer_setNewAccessRelation.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --allow-empty +; RUN: opt %loadNPMPolly '-passes=print,scop(polly-import-jscop,polly-codegen)' -disable-output < %s 2>&1 | FileCheck %s --allow-empty ; ; Polly codegen used to generate invalid code (referring to %ptr from the ; original region) when regeneration of the access function is necessary. @@ -35,5 +35,3 @@ exit: ; CHECK-NOT: Valid Region for Scop -; CHECK: Detected Scops in Function base_pointer_is_inst_inside_invariant_1 -; CHECK-NOT: Valid Region for Scop diff --git a/polly/test/ScopDetect/callbr.ll b/polly/test/ScopDetect/callbr.ll index 4200339a04a13..4182974693678 100644 --- a/polly/test/ScopDetect/callbr.ll +++ b/polly/test/ScopDetect/callbr.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-detect-track-failures -disable-output -pass-remarks-missed=polly-detect < %s 2>&1 | FileCheck %s --check-prefix=REMARK -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-detect-track-failures -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=STAT +; RUN: opt %loadNPMPolly '-passes=print' -polly-detect-track-failures -disable-output -pass-remarks-missed=polly-detect < %s 2>&1 | FileCheck %s --check-prefix=REMARK +; RUN: opt %loadNPMPolly '-passes=print' -polly-detect-track-failures -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=STAT ; REQUIRES: asserts ; REMARK: Branch from indirect terminator. diff --git a/polly/test/ScopDetect/collective_invariant_loads.ll b/polly/test/ScopDetect/collective_invariant_loads.ll index f5263e4e4c40a..f451bccec706f 100644 --- a/polly/test/ScopDetect/collective_invariant_loads.ll +++ b/polly/test/ScopDetect/collective_invariant_loads.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting -disable-output< %s 2>&1 | FileCheck %s ;CHECK: Function: test_init_chpl ;CHECK-NEXT: Region: %bb1---%bb16 diff --git a/polly/test/ScopDetect/cross_loop_non_single_exit.ll b/polly/test/ScopDetect/cross_loop_non_single_exit.ll index d7605c36d449c..fe3922174c07c 100644 --- a/polly/test/ScopDetect/cross_loop_non_single_exit.ll +++ b/polly/test/ScopDetect/cross_loop_non_single_exit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll b/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll index c3a2ad4791ba7..4cac173932a6f 100644 --- a/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll +++ b/polly/test/ScopDetect/cross_loop_non_single_exit_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll b/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll index e896e18589e94..7d7476471bb6e 100644 --- a/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll +++ b/polly/test/ScopDetect/dependency_to_phi_node_outside_of_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" define void @f(ptr %A, i64 %N, i64 %M) nounwind { diff --git a/polly/test/ScopDetect/detect-full-functions.ll b/polly/test/ScopDetect/detect-full-functions.ll index adad0e89ffa42..178ef32827cab 100644 --- a/polly/test/ScopDetect/detect-full-functions.ll +++ b/polly/test/ScopDetect/detect-full-functions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-process-unprofitable=false -disable-output -polly-detect-full-functions < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-process-unprofitable=false -disable-output -polly-detect-full-functions < %s 2>&1 | FileCheck %s ; Verify if a simple function with basic block not part of loop doesn't crash with polly-process-unprofitable=false and polly-detect-full-functions flags. diff --git a/polly/test/ScopDetect/dom-tree-crash.ll b/polly/test/ScopDetect/dom-tree-crash.ll index 0f670ca230824..efc732c50e177 100644 --- a/polly/test/ScopDetect/dom-tree-crash.ll +++ b/polly/test/ScopDetect/dom-tree-crash.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Detected Scops in Function foo diff --git a/polly/test/ScopDetect/dot-scops-npm.ll b/polly/test/ScopDetect/dot-scops-npm.ll index de1f52813475a..d14bf8a23a166 100644 --- a/polly/test/ScopDetect/dot-scops-npm.ll +++ b/polly/test/ScopDetect/dot-scops-npm.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-dot -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=polly-scop-printer' -disable-output < %s ; RUN: FileCheck %s -input-file=scops.func_npm.dot ; ; Check that the ScopPrinter does not crash. diff --git a/polly/test/ScopDetect/dot-scops.ll b/polly/test/ScopDetect/dot-scops.ll index a719d21300b15..63163b23617cf 100644 --- a/polly/test/ScopDetect/dot-scops.ll +++ b/polly/test/ScopDetect/dot-scops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print,polly-scop-printer' -disable-output < %s ; ; Check that the ScopPrinter does not crash. ; ScopPrinter needs the ScopDetection pass, which should depend on diff --git a/polly/test/ScopDetect/error-block-always-executed.ll b/polly/test/ScopDetect/error-block-always-executed.ll index 0e82e37d10095..20d02b1c1ae0b 100644 --- a/polly/test/ScopDetect/error-block-always-executed.ll +++ b/polly/test/ScopDetect/error-block-always-executed.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid Region for Scop: diff --git a/polly/test/ScopDetect/error-block-referenced-from-scop.ll b/polly/test/ScopDetect/error-block-referenced-from-scop.ll index 338fe20679bcf..6c66f6df14af5 100644 --- a/polly/test/ScopDetect/error-block-referenced-from-scop.ll +++ b/polly/test/ScopDetect/error-block-referenced-from-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid Region for Scop: diff --git a/polly/test/ScopDetect/error-block-unreachable.ll b/polly/test/ScopDetect/error-block-unreachable.ll index 85f248da9be18..6ba7698a972bb 100644 --- a/polly/test/ScopDetect/error-block-unreachable.ll +++ b/polly/test/ScopDetect/error-block-unreachable.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; Verify that the scop detection does not crash on inputs with unreachable ; blocks. Earlier we crashed when detecting error blocks. diff --git a/polly/test/ScopDetect/expand-region-correctly-2.ll b/polly/test/ScopDetect/expand-region-correctly-2.ll index 43fdda8321cbe..a5c9626d28361 100644 --- a/polly/test/ScopDetect/expand-region-correctly-2.ll +++ b/polly/test/ScopDetect/expand-region-correctly-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: if.end.1631 => for.cond.1647.outer ; diff --git a/polly/test/ScopDetect/expand-region-correctly.ll b/polly/test/ScopDetect/expand-region-correctly.ll index b4caac4478d1d..a8c90c08fde0c 100644 --- a/polly/test/ScopDetect/expand-region-correctly.ll +++ b/polly/test/ScopDetect/expand-region-correctly.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Valid Region for Scop: if.end.1631 => for.cond.1647.outer diff --git a/polly/test/ScopDetect/ignore_func_flag_regex.ll b/polly/test/ScopDetect/ignore_func_flag_regex.ll index ef1c66686251a..a75e705995a75 100644 --- a/polly/test/ScopDetect/ignore_func_flag_regex.ll +++ b/polly/test/ScopDetect/ignore_func_flag_regex.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-polly-ignore-func=f.*,g.*' '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-ignore-func=f.*,g.* '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the flag `-polly-ignore-func` works with regexes. ; diff --git a/polly/test/ScopDetect/index_from_unpredictable_loop.ll b/polly/test/ScopDetect/index_from_unpredictable_loop.ll index a6f7079f68407..f6d6cfab0eede 100644 --- a/polly/test/ScopDetect/index_from_unpredictable_loop.ll +++ b/polly/test/ScopDetect/index_from_unpredictable_loop.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=AFFINE -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=AFFINE +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopDetect/index_from_unpredictable_loop2.ll b/polly/test/ScopDetect/index_from_unpredictable_loop2.ll index be76e0b138933..16d47619b0ff2 100644 --- a/polly/test/ScopDetect/index_from_unpredictable_loop2.ll +++ b/polly/test/ScopDetect/index_from_unpredictable_loop2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=AFFINE -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=AFFINE +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=print' -disable-output < %s | FileCheck %s --check-prefix=NONAFFINE ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopDetect/indvars.ll b/polly/test/ScopDetect/indvars.ll index e45e4fb016155..3fbc4d65bbe20 100644 --- a/polly/test/ScopDetect/indvars.ll +++ b/polly/test/ScopDetect/indvars.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,scop(polly-codegen)' -disable-output < %s 2>&1 | FileCheck %s ; target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopDetect/intrinsics_1.ll b/polly/test/ScopDetect/intrinsics_1.ll index 43fa4ca619ed7..58c9197f7f799 100644 --- a/polly/test/ScopDetect/intrinsics_1.ll +++ b/polly/test/ScopDetect/intrinsics_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Valid Region for Scop: for.cond => for.end ; diff --git a/polly/test/ScopDetect/intrinsics_2.ll b/polly/test/ScopDetect/intrinsics_2.ll index b4cc3df7c746b..f71016e6d04cd 100644 --- a/polly/test/ScopDetect/intrinsics_2.ll +++ b/polly/test/ScopDetect/intrinsics_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we allow the lifetime markers for the tmp array. ; diff --git a/polly/test/ScopDetect/intrinsics_3.ll b/polly/test/ScopDetect/intrinsics_3.ll index 08fdee573ba0f..579d5bd481d44 100644 --- a/polly/test/ScopDetect/intrinsics_3.ll +++ b/polly/test/ScopDetect/intrinsics_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we allow the misc intrinsics. ; diff --git a/polly/test/ScopDetect/invalid-latch-conditions.ll b/polly/test/ScopDetect/invalid-latch-conditions.ll index c7d7c51e7d220..db4898c9c7bd7 100644 --- a/polly/test/ScopDetect/invalid-latch-conditions.ll +++ b/polly/test/ScopDetect/invalid-latch-conditions.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NALOOPS -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NALOOPS +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; The latch conditions of the outer loop are not affine, thus the loop cannot ; handled by the domain generation and needs to be overapproximated. diff --git a/polly/test/ScopDetect/invalidate_scalar_evolution.ll b/polly/test/ScopDetect/invalidate_scalar_evolution.ll index 977918eb5168d..ddef510ad4d9f 100644 --- a/polly/test/ScopDetect/invalidate_scalar_evolution.ll +++ b/polly/test/ScopDetect/invalidate_scalar_evolution.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PHI +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PHI ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/invariant-load-before-scop.ll b/polly/test/ScopDetect/invariant-load-before-scop.ll index 932c218170caf..10479643959cb 100644 --- a/polly/test/ScopDetect/invariant-load-before-scop.ll +++ b/polly/test/ScopDetect/invariant-load-before-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; The LoadInst %.b761 is defined outside the SCoP, hence is always constant ; within it. It is no "required invariant load". diff --git a/polly/test/ScopDetect/keep_going_expansion.ll b/polly/test/ScopDetect/keep_going_expansion.ll index efd81c695ca0d..074aae9ae95c9 100644 --- a/polly/test/ScopDetect/keep_going_expansion.ll +++ b/polly/test/ScopDetect/keep_going_expansion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-detect-track-failures -polly-detect-keep-going '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-detect-track-failures -polly-detect-keep-going '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopDetect/mod_ref_read_pointer.ll b/polly/test/ScopDetect/mod_ref_read_pointer.ll index c7972cc47a68d..64535d85f2ab1 100644 --- a/polly/test/ScopDetect/mod_ref_read_pointer.ll +++ b/polly/test/ScopDetect/mod_ref_read_pointer.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=MODREF -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=MODREF +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid Region for Scop: for.body => for.end ; MODREF: Valid Region for Scop: for.body => for.end diff --git a/polly/test/ScopDetect/more-than-one-loop.ll b/polly/test/ScopDetect/more-than-one-loop.ll index 1835342812b1f..30090652326d2 100644 --- a/polly/test/ScopDetect/more-than-one-loop.ll +++ b/polly/test/ScopDetect/more-than-one-loop.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-process-unprofitable=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Valid Region for Scop: diff --git a/polly/test/ScopDetect/multidim-with-undef-size.ll b/polly/test/ScopDetect/multidim-with-undef-size.ll index e89cea98ad21a..2a5f8b15534fa 100644 --- a/polly/test/ScopDetect/multidim-with-undef-size.ll +++ b/polly/test/ScopDetect/multidim-with-undef-size.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; CHECK: Valid Region for Scop: bb14 => bb17 diff --git a/polly/test/ScopDetect/multidim.ll b/polly/test/ScopDetect/multidim.ll index cbe7d0708b853..91202373263f0 100644 --- a/polly/test/ScopDetect/multidim.ll +++ b/polly/test/ScopDetect/multidim.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; CHECK: Valid Region for Scop: bb19 => bb20 diff --git a/polly/test/ScopDetect/multidim_indirect_access.ll b/polly/test/ScopDetect/multidim_indirect_access.ll index 4af37ba064558..a9cd446d27670 100644 --- a/polly/test/ScopDetect/multidim_indirect_access.ll +++ b/polly/test/ScopDetect/multidim_indirect_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we will recognize this SCoP. ; diff --git a/polly/test/ScopDetect/multidim_two_accesses_different_delinearization.ll b/polly/test/ScopDetect/multidim_two_accesses_different_delinearization.ll index 0286642f3c7a7..9c91fbfbe0b64 100644 --- a/polly/test/ScopDetect/multidim_two_accesses_different_delinearization.ll +++ b/polly/test/ScopDetect/multidim_two_accesses_different_delinearization.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/ScopDetect/nested_loop_single_exit.ll b/polly/test/ScopDetect/nested_loop_single_exit.ll index 89071df596807..a0742112b6e12 100644 --- a/polly/test/ScopDetect/nested_loop_single_exit.ll +++ b/polly/test/ScopDetect/nested_loop_single_exit.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s ; void f(long A[], long N) { ; long i, j; diff --git a/polly/test/ScopDetect/non-affine-conditional.ll b/polly/test/ScopDetect/non-affine-conditional.ll index b20828d9a7679..e74619cd87756 100644 --- a/polly/test/ScopDetect/non-affine-conditional.ll +++ b/polly/test/ScopDetect/non-affine-conditional.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/ScopDetect/non-affine-float-compare.ll b/polly/test/ScopDetect/non-affine-float-compare.ll index 77427397bac9d..9326cd4290380 100644 --- a/polly/test/ScopDetect/non-affine-float-compare.ll +++ b/polly/test/ScopDetect/non-affine-float-compare.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(float *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll index f6ae9fe8dd544..1ab6b35ae93f1 100644 --- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll +++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access.ll @@ -1,7 +1,7 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; ; Here we have a non-affine loop but also a non-affine access which should ; be rejected as long as -polly-allow-nonaffine isn't given. diff --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll index 23c1765caecac..921f6ab535499 100644 --- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll +++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES ; ; Here we have a non-affine loop (in the context of the loop nest) ; and also a non-affine access (A[k]). While we can always detect the diff --git a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll index 6e239a6570668..78774d92e0a46 100644 --- a/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll +++ b/polly/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES ; ; Here we have a non-affine loop (in the context of the loop nest) ; and also a non-affine access (A[k]). While we can always detect the diff --git a/polly/test/ScopDetect/non-affine-loop.ll b/polly/test/ScopDetect/non-affine-loop.ll index dd675ccec5999..5136b3b8779b1 100644 --- a/polly/test/ScopDetect/non-affine-loop.ll +++ b/polly/test/ScopDetect/non-affine-loop.ll @@ -1,8 +1,8 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINEREGIONSANDACCESSES -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINEREGIONSANDACCESSES +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; ; This function/region does contain a loop, however it is non-affine, hence the access ; A[i] is also. Furthermore, it is the only loop, thus when we over approximate diff --git a/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll b/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll index 63b1cdb420b71..fd52c5df7b27e 100644 --- a/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll +++ b/polly/test/ScopDetect/non-beneficial-loops-small-trip-count.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid ; diff --git a/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll b/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll index ff4ad3218ffa5..d0c1f7a613332 100644 --- a/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll +++ b/polly/test/ScopDetect/non-constant-add-rec-start-expr.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Valid Region for Scop: bb11 => bb25 diff --git a/polly/test/ScopDetect/non-simple-memory-accesses.ll b/polly/test/ScopDetect/non-simple-memory-accesses.ll index 5b9ed2b2ecae7..bdc48984f9961 100644 --- a/polly/test/ScopDetect/non-simple-memory-accesses.ll +++ b/polly/test/ScopDetect/non-simple-memory-accesses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we do not model atomic memory accesses. We did not reason about ; how to handle them correctly and the Alias Set Tracker models some of them diff --git a/polly/test/ScopDetect/non_affine_loop_condition.ll b/polly/test/ScopDetect/non_affine_loop_condition.ll index 3c487374c1973..63bd7b3a2f1f2 100644 --- a/polly/test/ScopDetect/non_affine_loop_condition.ll +++ b/polly/test/ScopDetect/non_affine_loop_condition.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; ; void f(int *A) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/ScopDetect/only-one-affine-loop.ll b/polly/test/ScopDetect/only-one-affine-loop.ll index a8ce5bc636833..1d36f4df35bc3 100644 --- a/polly/test/ScopDetect/only-one-affine-loop.ll +++ b/polly/test/ScopDetect/only-one-affine-loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Even if we allow non-affine loops we can only model the outermost loop, all ; other loops are boxed in non-affine regions. However, the inner loops can be diff --git a/polly/test/ScopDetect/only_func_flag.ll b/polly/test/ScopDetect/only_func_flag.ll index f4f35048fa8a0..4742375fec5cf 100644 --- a/polly/test/ScopDetect/only_func_flag.ll +++ b/polly/test/ScopDetect/only_func_flag.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-only-func=f,g '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-only-func=f,g '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the flag `-polly-only-func` limits analysis to `f` and `g`. ; diff --git a/polly/test/ScopDetect/only_func_flag_regex.ll b/polly/test/ScopDetect/only_func_flag_regex.ll index f180fa765f4b0..2ad22c9f7a7f5 100644 --- a/polly/test/ScopDetect/only_func_flag_regex.ll +++ b/polly/test/ScopDetect/only_func_flag_regex.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-polly-only-func=f.*,g.*' '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-only-func=f.*,g.* '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the flag `-polly-only-func` works with regexes. ; diff --git a/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll b/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll index 71d1ba0accd32..271825a58c399 100644 --- a/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll +++ b/polly/test/ScopDetect/parametric-multiply-in-scev-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK-NOT: Valid Region diff --git a/polly/test/ScopDetect/parametric-multiply-in-scev.ll b/polly/test/ScopDetect/parametric-multiply-in-scev.ll index 6768c969a7428..2ab8997c63331 100644 --- a/polly/test/ScopDetect/parametric-multiply-in-scev.ll +++ b/polly/test/ScopDetect/parametric-multiply-in-scev.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; foo(float *A, long n, long k) { ; if (true) diff --git a/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll b/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll index 2e16b75ee3106..248bb43aacd98 100644 --- a/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll +++ b/polly/test/ScopDetect/phi_with_multi_exiting_edges.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Region with an exit node that has a PHI node multiple incoming edges from ; inside the region. Motivation for supporting such cases in Polly. diff --git a/polly/test/ScopDetect/profitability-large-basic-blocks.ll b/polly/test/ScopDetect/profitability-large-basic-blocks.ll index ac27016e3622d..d74185b45c752 100644 --- a/polly/test/ScopDetect/profitability-large-basic-blocks.ll +++ b/polly/test/ScopDetect/profitability-large-basic-blocks.ll @@ -1,8 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false -polly-detect-profitability-min-per-loop-insts=40 '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFITABLE +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false \ +; RUN: -polly-detect-profitability-min-per-loop-insts=40 \ +; RUN: '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFITABLE -; RUN: opt %loadNPMPolly -polly-process-unprofitable=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFITABLE +; RUN: opt %loadNPMPolly -polly-process-unprofitable=true \ +; RUN: '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFITABLE -; RUN: opt %loadNPMPolly -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=UNPROFITABLE +; RUN: opt %loadNPMPolly -polly-process-unprofitable=false \ +; RUN: '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=UNPROFITABLE ; UNPROFITABLE-NOT: Valid Region for Scop: ; PROFITABLE: Valid Region for Scop: diff --git a/polly/test/ScopDetect/profitability-two-nested-loops.ll b/polly/test/ScopDetect/profitability-two-nested-loops.ll index 80379bcc5d412..0291d3be452a1 100644 --- a/polly/test/ScopDetect/profitability-two-nested-loops.ll +++ b/polly/test/ScopDetect/profitability-two-nested-loops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Valid Region for Scop: next => bb3 ; diff --git a/polly/test/ScopDetect/remove_all_children.ll b/polly/test/ScopDetect/remove_all_children.ll index 1c77d730ed418..d95e9bde0b384 100644 --- a/polly/test/ScopDetect/remove_all_children.ll +++ b/polly/test/ScopDetect/remove_all_children.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" diff --git a/polly/test/ScopDetect/report-scop-location.ll b/polly/test/ScopDetect/report-scop-location.ll index 530a22f9ac3d4..5e4c38db5e53c 100644 --- a/polly/test/ScopDetect/report-scop-location.ll +++ b/polly/test/ScopDetect/report-scop-location.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-report -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-report -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-i64:64-f80:128-s:64-n8:16:32:64-S128" ; Function Attrs: nounwind uwtable diff --git a/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll b/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll index 2ade0a97a5991..f49190b33ccf7 100644 --- a/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll +++ b/polly/test/ScopDetect/restrict-undef-size-scopdetect.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK-NOT: Valid Region for Scop: target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopDetect/run_time_alias_check.ll b/polly/test/ScopDetect/run_time_alias_check.ll index 6f327e318082c..74cbedb34e5c6 100644 --- a/polly/test/ScopDetect/run_time_alias_check.ll +++ b/polly/test/ScopDetect/run_time_alias_check.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" diff --git a/polly/test/ScopDetect/scev_remove_max.ll b/polly/test/ScopDetect/scev_remove_max.ll index 4f03845795c9c..f76c832ff08f5 100644 --- a/polly/test/ScopDetect/scev_remove_max.ll +++ b/polly/test/ScopDetect/scev_remove_max.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect < %s +; RUN: opt %loadNPMPolly '-passes=print' < %s ; This test case helps to determine whether SCEVRemoveMax::remove produces ; an infinite loop and a segmentation fault, if it processes, for example, diff --git a/polly/test/ScopDetect/sequential_loops.ll b/polly/test/ScopDetect/sequential_loops.ll index 338a9ae6b6b0e..4a84f356f3e81 100644 --- a/polly/test/ScopDetect/sequential_loops.ll +++ b/polly/test/ScopDetect/sequential_loops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" diff --git a/polly/test/ScopDetect/simple_loop.ll b/polly/test/ScopDetect/simple_loop.ll index 5da4898517e22..33823b21fb8fb 100644 --- a/polly/test/ScopDetect/simple_loop.ll +++ b/polly/test/ScopDetect/simple_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/simple_loop_non_single_entry.ll b/polly/test/ScopDetect/simple_loop_non_single_entry.ll index 00e11ab252e73..1bba2c21c7473 100644 --- a/polly/test/ScopDetect/simple_loop_non_single_entry.ll +++ b/polly/test/ScopDetect/simple_loop_non_single_entry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/simple_loop_non_single_exit.ll b/polly/test/ScopDetect/simple_loop_non_single_exit.ll index 9f75b80f58cef..93ec84e911c5d 100644 --- a/polly/test/ScopDetect/simple_loop_non_single_exit.ll +++ b/polly/test/ScopDetect/simple_loop_non_single_exit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll b/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll index c6ce482403400..33b0d8d7d6fc0 100644 --- a/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll +++ b/polly/test/ScopDetect/simple_loop_non_single_exit_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll b/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll index c90c4915e866d..9b47b7c946caf 100644 --- a/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll +++ b/polly/test/ScopDetect/simple_loop_two_phi_nodes.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/simple_loop_with_param.ll b/polly/test/ScopDetect/simple_loop_with_param.ll index 67f677892313c..4a0a3adab661d 100644 --- a/polly/test/ScopDetect/simple_loop_with_param.ll +++ b/polly/test/ScopDetect/simple_loop_with_param.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PHI +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PHI ; void f(long A[], long N, long *init_ptr) { ; long i, j; diff --git a/polly/test/ScopDetect/simple_loop_with_param_2.ll b/polly/test/ScopDetect/simple_loop_with_param_2.ll index 9e7b55efc48d9..670936b6fee80 100644 --- a/polly/test/ScopDetect/simple_loop_with_param_2.ll +++ b/polly/test/ScopDetect/simple_loop_with_param_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], int N, int *init_ptr) { ; long i, j; diff --git a/polly/test/ScopDetect/simple_non_single_entry.ll b/polly/test/ScopDetect/simple_non_single_entry.ll index e56c022aa5466..6ace3b636019b 100644 --- a/polly/test/ScopDetect/simple_non_single_entry.ll +++ b/polly/test/ScopDetect/simple_non_single_entry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetect/skip_function_attribute.ll b/polly/test/ScopDetect/skip_function_attribute.ll index 789942a950051..2150a3e8c35dd 100644 --- a/polly/test/ScopDetect/skip_function_attribute.ll +++ b/polly/test/ScopDetect/skip_function_attribute.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify polly skips this function ; diff --git a/polly/test/ScopDetect/srem_with_parametric_divisor.ll b/polly/test/ScopDetect/srem_with_parametric_divisor.ll index 471602968055e..66c3b045f62a4 100644 --- a/polly/test/ScopDetect/srem_with_parametric_divisor.ll +++ b/polly/test/ScopDetect/srem_with_parametric_divisor.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid Region for Scop: ; diff --git a/polly/test/ScopDetect/statistics.ll b/polly/test/ScopDetect/statistics.ll index 5d87599da29f7..a1dcebec63ff8 100644 --- a/polly/test/ScopDetect/statistics.ll +++ b/polly/test/ScopDetect/statistics.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -stats -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -stats -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts diff --git a/polly/test/ScopDetect/switch-in-loop-patch.ll b/polly/test/ScopDetect/switch-in-loop-patch.ll index 1e825f4950afa..2f9b670384db2 100644 --- a/polly/test/ScopDetect/switch-in-loop-patch.ll +++ b/polly/test/ScopDetect/switch-in-loop-patch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK-NOT: Valid diff --git a/polly/test/ScopDetect/tlr_is_hoistable_load.ll b/polly/test/ScopDetect/tlr_is_hoistable_load.ll index 24a3f55a519e2..5c33522f62325 100644 --- a/polly/test/ScopDetect/tlr_is_hoistable_load.ll +++ b/polly/test/ScopDetect/tlr_is_hoistable_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting -polly-detect-full-functions '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-invariant-load-hoisting -polly-detect-full-functions -polly-print-scops -disable-output < %s | FileCheck %s ; ; This testcase checks for compatibility of the -detect-full-functions ; flag in combination with the -invariant-load-hoisting option. More diff --git a/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll b/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll index e7245d80b60ed..4ae86a940e0c8 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportAlias-01.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-use-runtime-alias-checks=false -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-use-runtime-alias-checks=false -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1| FileCheck %s ;void f(int A[], int B[]) { ; for (int i=0; i<42; i++) diff --git a/polly/test/ScopDetectionDiagnostics/ReportEntry.ll b/polly/test/ScopDetectionDiagnostics/ReportEntry.ll index 2a0b281073f59..adb14b5b017d4 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportEntry.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportEntry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -pass-remarks-missed=polly-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed="polly-detect" -disable-output < %s 2>&1| FileCheck %s ; CHECK: remark: :0:0: Scop contains function entry (not yet supported). diff --git a/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll b/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll index fc4c1fbcef484..428a7cf855f6e 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportFuncCall-01.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; #define N 1024 ; double invalidCall(double A[N]); diff --git a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll index 7a540d606eadf..30e5fb9fdeba8 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -pass-remarks-missed=polly-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed="polly-detect" -disable-output < %s 2>&1| FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ;void foo(int a, int b) { diff --git a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll index 512366f1bc7ce..2bc515e0ae5e1 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportIrreducibleRegionWithoutDebugLoc.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -pass-remarks-missed=polly-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed="polly-detect" -disable-output < %s 2>&1| FileCheck %s ; CHECK: remark: :0:0: Irreducible region encountered in control flow. diff --git a/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll b/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll index e844aea24ac26..a96b64e4e0d54 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportLoopBound-01.ll @@ -1,6 +1,16 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-process-unprofitable=false -polly-detect-track-failures -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALLOWNONAFFINEALL +; RUN: opt %loadNPMPolly \ +; RUN: -pass-remarks-missed="polly-detect" -polly-detect-track-failures \ +; RUN: -polly-allow-nonaffine-loops=false '-passes=print' -disable-output \ +; RUN: < %s 2>&1| FileCheck %s --check-prefix=REJECTNONAFFINELOOPS +; RUN: opt %loadNPMPolly \ +; RUN: -pass-remarks-missed="polly-detect" -polly-detect-track-failures \ +; RUN: -polly-allow-nonaffine-loops=true '-passes=print' -disable-output \ +; RUN: < %s 2>&1| FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" \ +; RUN: -polly-process-unprofitable=false \ +; RUN: -polly-detect-track-failures -polly-allow-nonaffine-loops=true \ +; RUN: -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s --check-prefix=ALLOWNONAFFINEALL ; void f(int A[], int n) { ; for (int i = 0; i < A[n+i]; i++) diff --git a/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll b/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll index d80911cc0ec9a..6156efaea1909 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportLoopHasNoExit.ll @@ -4,8 +4,8 @@ ; the PostDominatorTree. Infinite loops are postdominated only by the virtual ; root, which causes them not to appear in regions in ScopDetection anymore. -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void func (int param0, int N, int *A) ; { diff --git a/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll b/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll index d8c2916cc23bb..dd95bd6ede715 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportMultipleNonAffineAccesses.ll @@ -1,9 +1,9 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -polly-delinearize=false -polly-detect-keep-going -disable-output < %s 2>&1 | FileCheck %s -check-prefix=ALL -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DELIN -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -polly-detect-keep-going -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DELIN-ALL -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1| FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -polly-delinearize=false -polly-detect-keep-going -disable-output < %s 2>&1| FileCheck %s -check-prefix=ALL +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1| FileCheck %s -check-prefix=DELIN +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -polly-detect-keep-going -disable-output < %s 2>&1| FileCheck %s -check-prefix=DELIN-ALL +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1| FileCheck %s -check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1| FileCheck %s -check-prefix=NONAFFINE ; 1 void manyaccesses(float A[restrict], long n, float B[restrict][n]) ; 2 { diff --git a/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll b/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll index ee0aa743f434b..13ac9d5ace2d3 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportNonAffineAccess-01.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1| FileCheck %s ; void f(int A[]) { ; for(int i=0; i<42; ++i) diff --git a/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll b/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll index ad2c813c4b7ce..93e9e8b14038b 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportUnprofitable.ll @@ -1,6 +1,10 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output -polly-process-unprofitable=false < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" \ +; RUN: -polly-detect-track-failures '-passes=print' -disable-output \ +; RUN: -polly-process-unprofitable=false < %s 2>&1| FileCheck %s -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output -polly-process-unprofitable=false -pass-remarks-output=%t.yaml < %s 2>&1 +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" \ +; RUN: -polly-detect-track-failures '-passes=print' -disable-output \ +; RUN: -polly-process-unprofitable=false < %s 2>&1 -pass-remarks-output=%t.yaml ; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll b/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll index d97032c8f8eaf..d110cfefc27dd 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportUnreachableInExit.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output -pass-remarks-missed=polly-detect < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s \ +; RUN: -pass-remarks-missed="polly-detect" 2>&1 | FileCheck %s ; void f(long A[], long N) { ; long i; diff --git a/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll b/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll index 7a5025c0c2fbe..5f296fae9532b 100644 --- a/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll +++ b/polly/test/ScopDetectionDiagnostics/ReportVariantBasePtr-01.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output < %s 2>&1| FileCheck %s ; struct b { ; double **b; diff --git a/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll b/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll index e15c045907ddf..3cdeed13ec285 100644 --- a/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll +++ b/polly/test/ScopDetectionDiagnostics/loop_has_multiple_exits.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -pass-remarks-missed=polly-detect -polly-detect-track-failures '-passes=polly-custom' -polly-print-detect -disable-output 2>&1 < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-detect-track-failures '-passes=print' -disable-output 2>&1 < %s | FileCheck %s -match-full-lines ; ; Derived from test-suite/MultiSource/Benchmarks/BitBench/uuencode/uuencode.c ; diff --git a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll index b5918d9f7a2d4..4a9a200d67dfd 100644 --- a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll +++ b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -pass-remarks-missed=polly-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed="polly-detect" -disable-output < %s 2>&1| FileCheck %s ; CHECK: remark: :0:0: Loop cannot be handled because not all latches are part of loop region. diff --git a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop.ll b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop.ll index 502abf8dab6d7..61ff033d9f934 100644 --- a/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop.ll +++ b/polly/test/ScopDetectionDiagnostics/loop_partially_in_scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -pass-remarks-missed=polly-detect -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-missed="polly-detect" -disable-output < %s 2>&1| FileCheck %s ; CHECK: remark: :0:0: Loop cannot be handled because not all latches are part of loop region. ; CHECK: remark: :0:0: Loop cannot be handled because not all latches are part of loop region. diff --git a/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll b/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll index accb562771819..c5efec3f50c58 100644 --- a/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll +++ b/polly/test/ScopInfo/20110312-Fail-without-basicaa.ll @@ -1,5 +1,5 @@ ; This should be run without alias analysis enabled. -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +;RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" define i32 @main() nounwind { diff --git a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll index 57ae977a1a13f..81c7efb963652 100644 --- a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll +++ b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" declare void @foo() diff --git a/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll b/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll index 3cb63cc4f952c..5abf8ff29ef85 100644 --- a/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll +++ b/polly/test/ScopInfo/2012-03-16-Crash-because-of-unsigned-in-scev.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32" diff --git a/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll b/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll index 668fcd8fabcaf..d16ba453f9815 100644 --- a/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll +++ b/polly/test/ScopInfo/2015-10-04-Crash-in-domain-generation.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/Alias-0.ll b/polly/test/ScopInfo/Alias-0.ll index 50c1b65727eaf..ebbe744627ef8 100644 --- a/polly/test/ScopInfo/Alias-0.ll +++ b/polly/test/ScopInfo/Alias-0.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=RTA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-use-runtime-alias-checks=false -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=NORTA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=RTA +; RUN: opt %loadNPMPolly '-passes=print' -polly-use-runtime-alias-checks=false -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=NORTA ; REQUIRES: asserts target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/Alias-1.ll b/polly/test/ScopInfo/Alias-1.ll index 15fd6c936fc47..b1711c25857d0 100644 --- a/polly/test/ScopInfo/Alias-1.ll +++ b/polly/test/ScopInfo/Alias-1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=RTA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-use-runtime-alias-checks=false -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=NORTA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=RTA +; RUN: opt %loadNPMPolly '-passes=print' -polly-use-runtime-alias-checks=false -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=NORTA ; REQUIRES: asserts target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/Alias-2.ll b/polly/test/ScopInfo/Alias-2.ll index 598ad0fe8cf1c..b94f130c94ebd 100644 --- a/polly/test/ScopInfo/Alias-2.ll +++ b/polly/test/ScopInfo/Alias-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=RTA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-use-runtime-alias-checks=false -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=NORTA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=RTA +; RUN: opt %loadNPMPolly '-passes=print' -polly-use-runtime-alias-checks=false -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=NORTA ; REQUIRES: asserts target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/Alias-3.ll b/polly/test/ScopInfo/Alias-3.ll index 388a2defec395..af7816546b4ab 100644 --- a/polly/test/ScopInfo/Alias-3.ll +++ b/polly/test/ScopInfo/Alias-3.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=RTA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-use-runtime-alias-checks=false -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=NORTA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=RTA +; RUN: opt %loadNPMPolly '-passes=print' -polly-use-runtime-alias-checks=false -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=NORTA ; REQUIRES: asserts target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/Alias-4.ll b/polly/test/ScopInfo/Alias-4.ll index e9f4f95a9997f..fe651c87b241c 100644 --- a/polly/test/ScopInfo/Alias-4.ll +++ b/polly/test/ScopInfo/Alias-4.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline= '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=RTA -; RUN: opt %loadNPMPolly -aa-pipeline= '-passes=polly-custom' -polly-print-detect -polly-print-scops -polly-use-runtime-alias-checks=false -disable-output -stats < %s 2>&1 | FileCheck %s --check-prefix=NORTA +; RUN: opt %loadNPMPolly -aa-pipeline= '-passes=print,print' -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=RTA +; RUN: opt %loadNPMPolly -aa-pipeline= '-passes=print,print' -polly-use-runtime-alias-checks=false -disable-output < %s -stats 2>&1 | FileCheck %s --check-prefix=NORTA ; REQUIRES: asserts target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/BoundChecks/single-loop.ll b/polly/test/ScopInfo/BoundChecks/single-loop.ll index d44c18cf49e36..0b69beaaf3f9c 100644 --- a/polly/test/ScopInfo/BoundChecks/single-loop.ll +++ b/polly/test/ScopInfo/BoundChecks/single-loop.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; This only works after the post-dominator tree has been fixed. ; diff --git a/polly/test/ScopInfo/BoundChecks/two-loops.ll b/polly/test/ScopInfo/BoundChecks/two-loops.ll index 9034f75f13792..f2ba17d33c0ea 100644 --- a/polly/test/ScopInfo/BoundChecks/two-loops.ll +++ b/polly/test/ScopInfo/BoundChecks/two-loops.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output< %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; This only works after the post-dominator tree has fixed. ; XFAIL: * diff --git a/polly/test/ScopInfo/NonAffine/div_backedge.ll b/polly/test/ScopInfo/NonAffine/div_backedge.ll index e8edad9494075..3b0c673ece38b 100644 --- a/polly/test/ScopInfo/NonAffine/div_backedge.ll +++ b/polly/test/ScopInfo/NonAffine/div_backedge.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(float *A) { ; for (long i = 1;; i++) { diff --git a/polly/test/ScopInfo/NonAffine/div_domain.ll b/polly/test/ScopInfo/NonAffine/div_domain.ll index c195bb42dac9f..34a5cecdfe3df 100644 --- a/polly/test/ScopInfo/NonAffine/div_domain.ll +++ b/polly/test/ScopInfo/NonAffine/div_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(float *A) { ; for (long i = 0; i < 16; i++) { diff --git a/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll b/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll index 31ecdaa0ef3e4..7d02fae7f98f3 100644 --- a/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll +++ b/polly/test/ScopInfo/NonAffine/invariant_loads_dependent_in_non_affine_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int *B, int *C) { ; for (int i = 0; i < 1000; i++) diff --git a/polly/test/ScopInfo/NonAffine/modulo_backedge.ll b/polly/test/ScopInfo/NonAffine/modulo_backedge.ll index e0cd1e51a095c..d5c808d9021f2 100644 --- a/polly/test/ScopInfo/NonAffine/modulo_backedge.ll +++ b/polly/test/ScopInfo/NonAffine/modulo_backedge.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Domain := ; CHECK: { Stmt_for_body[i0] : 0 <= i0 <= 6 }; diff --git a/polly/test/ScopInfo/NonAffine/modulo_domain.ll b/polly/test/ScopInfo/NonAffine/modulo_domain.ll index 53bbe15799e61..13fe53f11633d 100644 --- a/polly/test/ScopInfo/NonAffine/modulo_domain.ll +++ b/polly/test/ScopInfo/NonAffine/modulo_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; TODO: The new domain generation cannot handle modulo domain constraints, ; hence modulo handling has been disabled completely. Once this is diff --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll index 7d34ef9644b5a..2b8427d74ec84 100644 --- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll +++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCALAR -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFIT +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCALAR +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-process-unprofitable=false '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=PROFIT ; ; SCALAR: Function: f ; SCALAR-NEXT: Region: %bb1---%bb13 diff --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll index a40afdde1237f..30f756e81e474 100644 --- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll +++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL ; ; Here we have a non-affine loop (in the context of the loop nest) ; and also a non-affine access (A[k]). While we can always model the diff --git a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll index f3678d3245f57..6dacd719862ef 100644 --- a/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll +++ b/polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL ; ; Here we have a non-affine loop (in the context of the loop nest) ; and also a non-affine access (A[k]). While we can always model the diff --git a/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll b/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll index 85a1081159d59..8a13f791ed6de 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_access_with_range_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A) { ; for (int i = 0; i < 128; i++) diff --git a/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll b/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll index 65513a5d9d1fb..1e70d2c9db87e 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_but_sdiv.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_for_body diff --git a/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll b/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll index 0185774d6274c..dcfaa9280dcb8 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void pos(float *A, long n) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll index ab47dc0b78260..24bfe60502163 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll index 51a7d54562780..931ad36d15f34 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll @@ -1,5 +1,12 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-invariant-load-hoisting=true -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-nonaffine-loops=true \ +; RUN: '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true \ +; RUN: '-passes=print' -disable-output < %s 2>&1 | FileCheck %s \ +; RUN: --check-prefix=ALL ; ; Negative test for INNERMOST. ; At the moment we will optimistically assume A[i] in the conditional before the inner diff --git a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll index b1f7e65e9dd25..37b51cebd74d5 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll @@ -1,6 +1,16 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-invariant-load-hoisting=true -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-process-unprofitable=false -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-nonaffine-loops=true \ +; RUN: '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=INNERMOST +; RUN: opt %loadNPMPolly -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true \ +; RUN: '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=ALL +; RUN: opt %loadNPMPolly -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-process-unprofitable=false \ +; RUN: -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true \ +; RUN: '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; ; Negative test for INNERMOST. ; At the moment we will optimistically assume A[i] in the conditional before the inner diff --git a/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll b/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll index ac77dfb7454d3..7bfd7f86efcdb 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_float_compare.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(float *A) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll b/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll index db08544aa559c..fc779d544e62f 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_loop_condition.ll @@ -1,6 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-detect-reductions=false '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NO-REDUCTION +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-process-unprofitable=false '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-detect-reductions=false '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NO-REDUCTION ; ; void f(int *A, int *C) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll b/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll index cde2dc495d549..63ff354d7e5f7 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-unprofitable-scalar-accs=true -polly-process-unprofitable=false '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-unprofitable-scalar-accs=true -polly-process-unprofitable=false '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT ; ; Verify that we over approximate the read access of A[j] in the last statement as j is ; computed in a non-affine loop we do not model. diff --git a/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll b/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll index ce4cc6189d45c..d33befe2c66e0 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_parametric_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, double A[], int INDEX[]) { diff --git a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll index b46ce87a45e2d..77c2df48d6514 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-detect '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -polly-detect '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/NonAffine/whole-scop-non-affine-subregion-in-loop.ll b/polly/test/ScopInfo/NonAffine/whole-scop-non-affine-subregion-in-loop.ll index 58e5ccd9b6e36..9ed340d1d304b 100644 --- a/polly/test/ScopInfo/NonAffine/whole-scop-non-affine-subregion-in-loop.ll +++ b/polly/test/ScopInfo/NonAffine/whole-scop-non-affine-subregion-in-loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; ; Regression test that triggered a memory leak at some point (24947). ; diff --git a/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll b/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll index d94fc5f8a8823..cbd024ba7a392 100644 --- a/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll +++ b/polly/test/ScopInfo/aliasing_conditional_alias_groups_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that there is no alias group because we either access A or B never both. ; diff --git a/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll b/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll index df7f75dd8d95e..3858d8a7bb1d6 100644 --- a/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll +++ b/polly/test/ScopInfo/aliasing_conditional_alias_groups_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we create two alias groups since the minimal/maximal accesses ; depend on %b. diff --git a/polly/test/ScopInfo/aliasing_dead_access.ll b/polly/test/ScopInfo/aliasing_dead_access.ll index 0ebc39c0e5a78..7baa3dce1f9db 100644 --- a/polly/test/ScopInfo/aliasing_dead_access.ll +++ b/polly/test/ScopInfo/aliasing_dead_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not create a SCoP if there is no statement executed. ; diff --git a/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll b/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll index 8e5bab661e18c..7265aab22a490 100644 --- a/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll +++ b/polly/test/ScopInfo/aliasing_many_arrays_to_compare.ll @@ -1,5 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=FOUND -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output -polly-rtc-max-arrays-per-group=3 < %s 2>&1 | FileCheck %s --check-prefix=IGNORED +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output \ +; RUN: < %s 2>&1 | FileCheck %s --check-prefix=FOUND +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output \ +; RUN: -polly-rtc-max-arrays-per-group=3 < %s 2>&1 | FileCheck %s \ +; RUN: --check-prefix=IGNORED ; ; FOUND: Function: foo ; IGNORED-NOT: Function: foo diff --git a/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll b/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll index aec6ea0bf1441..c7592bcb09fcf 100644 --- a/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll +++ b/polly/test/ScopInfo/aliasing_many_parameters_not_all_involved.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-analysis-computeout=0 '-passes=polly-custom' -polly-print-scops -polly-rtc-max-parameters=8 -disable-output < %s | FileCheck %s --check-prefix=MAX8 -; RUN: opt %loadNPMPolly -polly-analysis-computeout=0 '-passes=polly-custom' -polly-print-scops -polly-rtc-max-parameters=7 -disable-output < %s | FileCheck %s --check-prefix=MAX7 +; RUN: opt %loadPolly -polly-analysis-computeout=0 -polly-print-scops -polly-rtc-max-parameters=8 -disable-output < %s | FileCheck %s --check-prefix=MAX8 +; RUN: opt %loadPolly -polly-analysis-computeout=0 -polly-print-scops -polly-rtc-max-parameters=7 -disable-output < %s | FileCheck %s --check-prefix=MAX7 ; ; Check that we allow this SCoP even though it has 10 parameters involved in possibly aliasing accesses. ; However, only 7 are involved in accesses through B, 8 through C and none in accesses through A. diff --git a/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll b/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll index a7dbe0baeae5d..d66a10bc511b1 100644 --- a/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll +++ b/polly/test/ScopInfo/aliasing_many_read_only_acesses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: { : } diff --git a/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll b/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll index db54a1687b4d5..9943802ec8595 100644 --- a/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll +++ b/polly/test/ScopInfo/aliasing_multiple_alias_groups.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -aa-pipeline= < %s 2>&1 | FileCheck %s --check-prefix=NOAA -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -aa-pipeline=tbaa < %s 2>&1 | FileCheck %s --check-prefix=TBAA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -aa-pipeline= < %s 2>&1 | FileCheck %s --check-prefix=NOAA +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -aa-pipeline=tbaa < %s 2>&1 | FileCheck %s --check-prefix=TBAA ; ; void jd(int *Int0, int *Int1, float *Float0, float *Float1) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/ScopInfo/aliasing_with_non_affine_access.ll b/polly/test/ScopInfo/aliasing_with_non_affine_access.ll index 0001b8adb41e1..900d5d40d96f5 100644 --- a/polly/test/ScopInfo/aliasing_with_non_affine_access.ll +++ b/polly/test/ScopInfo/aliasing_with_non_affine_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -polly-process-unprofitable -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-process-unprofitable -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s ; ; @test1 ; Make sure we generate the correct aliasing check for a fixed-size memset operation. diff --git a/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll b/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll index 93253b7e65d4a..70c3c56fb3112 100644 --- a/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll +++ b/polly/test/ScopInfo/allow-all-parameters-dereferencable.ll @@ -1,9 +1,14 @@ -; RUN: opt %loadNPMPolly -disable-output -polly-invariant-load-hoisting -polly-allow-dereference-of-all-function-parameters '-passes=polly-custom' -polly-print-scops < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -disable-output -polly-invariant-load-hoisting \ +; RUN: -polly-allow-dereference-of-all-function-parameters \ +; RUN: '-passes=print' < %s 2>&1 | FileCheck %s --check-prefix=SCOP -; RUN: opt %loadNPMPolly -S -polly-invariant-load-hoisting '-passes=polly' < %s 2>&1 | FileCheck %s --check-prefix=CODE-RTC +; RUN: opt %loadNPMPolly -S -polly-invariant-load-hoisting \ +; RUN: -passes=polly-codegen < %s 2>&1 | FileCheck %s --check-prefix=CODE-RTC -; RUN: opt %loadNPMPolly -S -polly-invariant-load-hoisting -polly-allow-dereference-of-all-function-parameters '-passes=polly' < %s 2>&1 | FileCheck %s --check-prefix=CODE +; RUN: opt %loadNPMPolly -S -polly-invariant-load-hoisting \ +; RUN: -polly-allow-dereference-of-all-function-parameters \ +; RUN: -passes=polly-codegen < %s 2>&1 | FileCheck %s --check-prefix=CODE ; SCOP: Function: hoge ; SCOP-NEXT: Region: %bb15---%bb37 diff --git a/polly/test/ScopInfo/assume_gep_bounds.ll b/polly/test/ScopInfo/assume_gep_bounds.ll index 994d49e5b887f..bd14e3868d525 100644 --- a/polly/test/ScopInfo/assume_gep_bounds.ll +++ b/polly/test/ScopInfo/assume_gep_bounds.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void foo(float A[][20][30], long n, long m, long p) { ; for (long i = 0; i < n; i++) diff --git a/polly/test/ScopInfo/assume_gep_bounds_2.ll b/polly/test/ScopInfo/assume_gep_bounds_2.ll index be43be598bd3d..7a8c1870abe25 100644 --- a/polly/test/ScopInfo/assume_gep_bounds_2.ll +++ b/polly/test/ScopInfo/assume_gep_bounds_2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output -polly-precise-inbounds < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-precise-inbounds | FileCheck %s ; ; void foo(float A[restrict][20], float B[restrict][20], long n, long m, ; long p) { diff --git a/polly/test/ScopInfo/assume_gep_bounds_many.ll b/polly/test/ScopInfo/assume_gep_bounds_many.ll index cfd9008741c3a..01fc12cd7f108 100644 --- a/polly/test/ScopInfo/assume_gep_bounds_many.ll +++ b/polly/test/ScopInfo/assume_gep_bounds_many.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-scops -polly-ignore-aliasing < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output '-passes=print' -polly-ignore-aliasing \ +; RUN: < %s 2>&1 | FileCheck %s ; CHECK: Assumed Context: ; CHECK-NEXT: [n1_a, n1_b, n1_c, n1_d, n2_a, n2_b, n2_c, n2_d, n3_a, n3_b, n3_c, n3_d, n4_a, n4_b, n4_c, n4_d, n5_a, n5_b, n5_c, n5_d, n6_a, n6_b, n6_c, n6_d, n7_a, n7_b, n7_c, n7_d, n8_a, n8_b, n8_c, n8_d, n9_a, n9_b, n9_c, n9_d, p1_b, p1_c, p1_d, p2_b, p2_c, p2_d, p3_b, p3_c, p3_d, p4_b, p4_c, p4_d, p5_b, p5_c, p5_d, p6_b, p6_c, p6_d, p7_b, p7_c, p7_d, p8_b, p8_c, p8_d, p9_b, p9_c, p9_d] -> { : p1_b >= n1_b and p1_c >= n1_c and p1_d >= n1_d and p2_b >= n2_b and p2_c >= n2_c and p2_d >= n2_d and p3_b >= n3_b and p3_c >= n3_c and p3_d >= n3_d and p4_b >= n4_b and p4_c >= n4_c and p4_d >= n4_d and p5_b >= n5_b and p5_c >= n5_c and p5_d >= n5_d and p6_b >= n6_b and p6_c >= n6_c and p6_d >= n6_d and p7_b >= n7_b and p7_c >= n7_c and p7_d >= n7_d and p8_b >= n8_b and p8_c >= n8_c and p8_d >= n8_d and p9_b >= n9_b and p9_c >= n9_c and p9_d >= n9_d } diff --git a/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll b/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll index b3aa7686d3010..3fb7a1329c745 100644 --- a/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll +++ b/polly/test/ScopInfo/avoid_new_parameters_from_geps.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do no introduce a parameter here that is actually not needed. ; diff --git a/polly/test/ScopInfo/bool-addrec.ll b/polly/test/ScopInfo/bool-addrec.ll index 01c6d52c30f76..81fcade08f65a 100644 --- a/polly/test/ScopInfo/bool-addrec.ll +++ b/polly/test/ScopInfo/bool-addrec.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-ast -polly-process-unprofitable < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output '-passes=print' -polly-process-unprofitable < %s 2>&1 | FileCheck %s ; CHECK: for (int c0 = 0; c0 <= 19999; c0 += 1) { ; CHECK-NEXT: if (c0 % 2 == 0) diff --git a/polly/test/ScopInfo/bounded_loop_assumptions.ll b/polly/test/ScopInfo/bounded_loop_assumptions.ll index 21ba391f4fc1a..5628092de7765 100644 --- a/polly/test/ScopInfo/bounded_loop_assumptions.ll +++ b/polly/test/ScopInfo/bounded_loop_assumptions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The assumed context is tricky here as the equality test for the inner loop ; allows an "unbounded" loop trip count. We assume that does not happen, thus diff --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll index d25a8e666b525..83743e4e4ecc7 100644 --- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll +++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-2.ll @@ -1,6 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DETECT +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=DETECT -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOP +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=SCOP ; DETECT: Valid Region for Scop: loop => barrier ; DETECT-NEXT: Valid Region for Scop: branch => end diff --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll index 91aa96e0f3501..9685ba37a49a1 100644 --- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll +++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations-3.ll @@ -1,5 +1,8 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output -polly-allow-nonaffine-branches=false < %s 2>&1 | FileCheck %s -check-prefix=NO-NONEAFFINE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output \ +; RUN: -polly-allow-nonaffine-branches=false < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=NO-NONEAFFINE ; NONAFFINE: Statements { ; NONAFFINE-NEXT: Stmt_loop diff --git a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll index 22a60c764eb4d..f41e6500fb30a 100644 --- a/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll +++ b/polly/test/ScopInfo/branch-references-loop-scev-with-unknown-iterations.ll @@ -1,5 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output -polly-allow-nonaffine-branches=false < %s 2>&1 | FileCheck %s -check-prefix=NO-NONEAFFINE +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output \ +; RUN: -polly-allow-nonaffine-branches=false < %s 2>&1 | \ +; RUN: FileCheck %s -check-prefix=NO-NONEAFFINE ; NONAFFINE-NOT: Statements diff --git a/polly/test/ScopInfo/bug_2010_10_22.ll b/polly/test/ScopInfo/bug_2010_10_22.ll index 1d248891dfd09..71e7051922b53 100644 --- a/polly/test/ScopInfo/bug_2010_10_22.ll +++ b/polly/test/ScopInfo/bug_2010_10_22.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/bug_2011_1_5.ll b/polly/test/ScopInfo/bug_2011_1_5.ll index 7c76c3eaa565a..f4a24e06f46ae 100644 --- a/polly/test/ScopInfo/bug_2011_1_5.ll +++ b/polly/test/ScopInfo/bug_2011_1_5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; Bug description: Alias Analysis thinks IntToPtrInst aliases with alloca instructions created by IndependentBlocks Pass. ; This will trigger the assertion when we are verifying the SCoP after IndependentBlocks. diff --git a/polly/test/ScopInfo/bug_scev_not_fully_eval.ll b/polly/test/ScopInfo/bug_scev_not_fully_eval.ll index 6e1ef2339a81d..ed6bbafdac1f0 100644 --- a/polly/test/ScopInfo/bug_scev_not_fully_eval.ll +++ b/polly/test/ScopInfo/bug_scev_not_fully_eval.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | not FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | not FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @edge.8265 = external global [72 x i32], align 32 ; [#uses=1] diff --git a/polly/test/ScopInfo/cfg_consequences.ll b/polly/test/ScopInfo/cfg_consequences.ll index 2b702e235ca6c..9161d3db4167a 100644 --- a/polly/test/ScopInfo/cfg_consequences.ll +++ b/polly/test/ScopInfo/cfg_consequences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void consequences(int *A, int bool_cond, int lhs, int rhs) { ; diff --git a/polly/test/ScopInfo/complex-branch-structure.ll b/polly/test/ScopInfo/complex-branch-structure.ll index f48089afb93b9..de79c2226e68d 100644 --- a/polly/test/ScopInfo/complex-branch-structure.ll +++ b/polly/test/ScopInfo/complex-branch-structure.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; We build a scop of the following form to check that the domain construction ; does not take a huge amount of time, but that we instead just bail out. diff --git a/polly/test/ScopInfo/complex-condition.ll b/polly/test/ScopInfo/complex-condition.ll index 9164959c1f6dc..c3b8d2bb0ef88 100644 --- a/polly/test/ScopInfo/complex-condition.ll +++ b/polly/test/ScopInfo/complex-condition.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Low complexity assumption: { : false } ; diff --git a/polly/test/ScopInfo/complex-expression.ll b/polly/test/ScopInfo/complex-expression.ll index 456edb04e0c2b..4a2a1d2a64a6d 100644 --- a/polly/test/ScopInfo/complex-expression.ll +++ b/polly/test/ScopInfo/complex-expression.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; This test case has an SCEVSMax expression with a very high arity. The ; piecewise affine function we would create for it would have a huge amount of diff --git a/polly/test/ScopInfo/complex-loop-nesting.ll b/polly/test/ScopInfo/complex-loop-nesting.ll index 4ffd8689f1a4a..36cb078f19fff 100644 --- a/polly/test/ScopInfo/complex-loop-nesting.ll +++ b/polly/test/ScopInfo/complex-loop-nesting.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/complex-successor-structure-2.ll b/polly/test/ScopInfo/complex-successor-structure-2.ll index 32425d7598bc9..f4a78bf753853 100644 --- a/polly/test/ScopInfo/complex-successor-structure-2.ll +++ b/polly/test/ScopInfo/complex-successor-structure-2.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; We build a scop for the region for.body->B13. The CFG is of the following ; form and the branch conditions are build from "smax" SCEVs. However, in diff --git a/polly/test/ScopInfo/complex-successor-structure-3.ll b/polly/test/ScopInfo/complex-successor-structure-3.ll index c01eca534bcf1..6da1fe3a8b9f3 100644 --- a/polly/test/ScopInfo/complex-successor-structure-3.ll +++ b/polly/test/ScopInfo/complex-successor-structure-3.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; ; Check that propagation of domains from A(X) to A(X+1) will keep the ; domains small and concise. diff --git a/polly/test/ScopInfo/complex-successor-structure.ll b/polly/test/ScopInfo/complex-successor-structure.ll index 1b39f4cf192eb..6c87ba3e98505 100644 --- a/polly/test/ScopInfo/complex-successor-structure.ll +++ b/polly/test/ScopInfo/complex-successor-structure.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; We build a scop from the region for.body->B13. The CFG is of the ; following form. The test checks that the condition construction does not take diff --git a/polly/test/ScopInfo/complex_domain_binary_condition.ll b/polly/test/ScopInfo/complex_domain_binary_condition.ll index 42a114eaa6ec1..6e28c9dfee06a 100644 --- a/polly/test/ScopInfo/complex_domain_binary_condition.ll +++ b/polly/test/ScopInfo/complex_domain_binary_condition.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Low complexity assumption: { : false } ; diff --git a/polly/test/ScopInfo/complex_execution_context.ll b/polly/test/ScopInfo/complex_execution_context.ll index 9896fba8904b8..9880a1dd67d19 100644 --- a/polly/test/ScopInfo/complex_execution_context.ll +++ b/polly/test/ScopInfo/complex_execution_context.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Low complexity assumption: ; diff --git a/polly/test/ScopInfo/cond_constant_in_loop.ll b/polly/test/ScopInfo/cond_constant_in_loop.ll index ecc2767fd6ecd..552fddc6ff08c 100644 --- a/polly/test/ScopInfo/cond_constant_in_loop.ll +++ b/polly/test/ScopInfo/cond_constant_in_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ;void f(long a[], long N, long M) { ; long i, j, k; diff --git a/polly/test/ScopInfo/cond_in_loop.ll b/polly/test/ScopInfo/cond_in_loop.ll index 0f31904133719..c06dcd955bac1 100644 --- a/polly/test/ScopInfo/cond_in_loop.ll +++ b/polly/test/ScopInfo/cond_in_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ;void f(long a[], long N, long M) { ; long i, j, k; diff --git a/polly/test/ScopInfo/condition-after-error-block-2.ll b/polly/test/ScopInfo/condition-after-error-block-2.ll index 257b2ede236d9..8c4b2170ad69b 100644 --- a/polly/test/ScopInfo/condition-after-error-block-2.ll +++ b/polly/test/ScopInfo/condition-after-error-block-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Verify that we do not allow PHI nodes such as %phi, if they reference an error ; block and are used by anything else than a terminator instruction. diff --git a/polly/test/ScopInfo/condition-after-error-block-before-scop.ll b/polly/test/ScopInfo/condition-after-error-block-before-scop.ll index d86b48ed24963..d5069da916fa1 100644 --- a/polly/test/ScopInfo/condition-after-error-block-before-scop.ll +++ b/polly/test/ScopInfo/condition-after-error-block-before-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/ScopInfo/condtion-after-error-block.ll b/polly/test/ScopInfo/condtion-after-error-block.ll index 8ad98b4a4a78e..d9de4fc40a208 100644 --- a/polly/test/ScopInfo/condtion-after-error-block.ll +++ b/polly/test/ScopInfo/condtion-after-error-block.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Verify that we allow scops containing uniform branch conditions, where all ; but one incoming block comes from an error condition. diff --git a/polly/test/ScopInfo/const_srem_sdiv.ll b/polly/test/ScopInfo/const_srem_sdiv.ll index b50c4bd910dda..b4c2f119fe053 100644 --- a/polly/test/ScopInfo/const_srem_sdiv.ll +++ b/polly/test/ScopInfo/const_srem_sdiv.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; ; See http://research.microsoft.com/pubs/151917/divmodnote-letter.pdf ; diff --git a/polly/test/ScopInfo/constant-non-integer-branch-condition.ll b/polly/test/ScopInfo/constant-non-integer-branch-condition.ll index f09f82f32c93a..86dd94e3371b2 100644 --- a/polly/test/ScopInfo/constant-non-integer-branch-condition.ll +++ b/polly/test/ScopInfo/constant-non-integer-branch-condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; At some point this caused a problem in the domain generation as we ; assumed any constant branch condition to be valid. However, only constant diff --git a/polly/test/ScopInfo/constant_factor_in_parameter.ll b/polly/test/ScopInfo/constant_factor_in_parameter.ll index 26c73bd72271b..b58d413e074e7 100644 --- a/polly/test/ScopInfo/constant_factor_in_parameter.ll +++ b/polly/test/ScopInfo/constant_factor_in_parameter.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-scops < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-scops < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output '-passes=print' < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output '-passes=print' < %s 2>&1 | FileCheck %s ; ; Check that the constant part of the N * M * 4 expression is not part of the ; parameter but explicit in the access function. This can avoid existentially diff --git a/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll b/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll index 762132f9edd78..62e6cd4641de1 100644 --- a/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll +++ b/polly/test/ScopInfo/constant_functions_outside_scop_as_unknown.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" diff --git a/polly/test/ScopInfo/constant_start_integer.ll b/polly/test/ScopInfo/constant_start_integer.ll index 6d17288b28227..8991f8250f0b7 100644 --- a/polly/test/ScopInfo/constant_start_integer.ll +++ b/polly/test/ScopInfo/constant_start_integer.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(float *input) { diff --git a/polly/test/ScopInfo/debug_call.ll b/polly/test/ScopInfo/debug_call.ll index 63c1baca5accc..a6761ecebe6a7 100644 --- a/polly/test/ScopInfo/debug_call.ll +++ b/polly/test/ScopInfo/debug_call.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-debug-func=dbg_printf '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-debug-func=dbg_printf '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Check that the call to dbg_printf is accepted as a debug-function. ; diff --git a/polly/test/ScopInfo/delinearize-together-all-data-refs.ll b/polly/test/ScopInfo/delinearize-together-all-data-refs.ll index 7126fb95cd00c..676c8a27e5749 100644 --- a/polly/test/ScopInfo/delinearize-together-all-data-refs.ll +++ b/polly/test/ScopInfo/delinearize-together-all-data-refs.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void foo(long n, long m, long o, double A[n][m][o]) { ; for (long i = 0; i < n-3; i++) diff --git a/polly/test/ScopInfo/div_by_zero.ll b/polly/test/ScopInfo/div_by_zero.ll index 62a13de7ceac0..aecd16833b84e 100644 --- a/polly/test/ScopInfo/div_by_zero.ll +++ b/polly/test/ScopInfo/div_by_zero.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/do-not-model-error-block-accesses.ll b/polly/test/ScopInfo/do-not-model-error-block-accesses.ll index 333175b417ade..a3ca59563ab1f 100644 --- a/polly/test/ScopInfo/do-not-model-error-block-accesses.ll +++ b/polly/test/ScopInfo/do-not-model-error-block-accesses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; Check that we do not crash on this input. Earlier this indeed crashed as ; we tried to model the access functions in an error block. diff --git a/polly/test/ScopInfo/eager-binary-and-or-conditions.ll b/polly/test/ScopInfo/eager-binary-and-or-conditions.ll index b111851939d06..a988b3f8c2b01 100644 --- a/polly/test/ScopInfo/eager-binary-and-or-conditions.ll +++ b/polly/test/ScopInfo/eager-binary-and-or-conditions.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output< %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s ; ; void or(float *A, long n, long m) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/early_exit_for_complex_domains.ll b/polly/test/ScopInfo/early_exit_for_complex_domains.ll index 3ee6ff7889c84..9a1edcbfb7796 100644 --- a/polly/test/ScopInfo/early_exit_for_complex_domains.ll +++ b/polly/test/ScopInfo/early_exit_for_complex_domains.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; ; Check we do not crash. ; diff --git a/polly/test/ScopInfo/error-blocks-1.ll b/polly/test/ScopInfo/error-blocks-1.ll index 902ea15752980..047b095a95947 100644 --- a/polly/test/ScopInfo/error-blocks-1.ll +++ b/polly/test/ScopInfo/error-blocks-1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Context: ; CHECK-NEXT: [N] -> { : -2147483648 <= N <= 2147483647 } diff --git a/polly/test/ScopInfo/error-blocks-2.ll b/polly/test/ScopInfo/error-blocks-2.ll index 613b00a1a9ba7..6fa12947540c0 100644 --- a/polly/test/ScopInfo/error-blocks-2.ll +++ b/polly/test/ScopInfo/error-blocks-2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/error-blocks-3.ll b/polly/test/ScopInfo/error-blocks-3.ll index 9521037888075..e7643601356db 100644 --- a/polly/test/ScopInfo/error-blocks-3.ll +++ b/polly/test/ScopInfo/error-blocks-3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-detect-keep-going -polly-allow-nonaffine -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-scops -polly-detect-keep-going -polly-allow-nonaffine -disable-output < %s | FileCheck %s ; ; The instruction ; diff --git a/polly/test/ScopInfo/escaping_empty_scop.ll b/polly/test/ScopInfo/escaping_empty_scop.ll index d47b2865b4ee0..2efaef3fb99b8 100644 --- a/polly/test/ScopInfo/escaping_empty_scop.ll +++ b/polly/test/ScopInfo/escaping_empty_scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void g(); ; int f(int *A) { diff --git a/polly/test/ScopInfo/exit-phi-1.ll b/polly/test/ScopInfo/exit-phi-1.ll index 21f13cf4f4e4d..cbd6c280e8caa 100644 --- a/polly/test/ScopInfo/exit-phi-1.ll +++ b/polly/test/ScopInfo/exit-phi-1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly' -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -passes=polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; Check for correct code generation of exit PHIs, even if the same PHI value ; is used again inside the the SCoP. diff --git a/polly/test/ScopInfo/exit-phi-2.ll b/polly/test/ScopInfo/exit-phi-2.ll index b8da9ab5b64f9..695c617b14c1f 100644 --- a/polly/test/ScopInfo/exit-phi-2.ll +++ b/polly/test/ScopInfo/exit-phi-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that there is no MK_ExitPHI READ access. ; diff --git a/polly/test/ScopInfo/exit_phi_accesses-2.ll b/polly/test/ScopInfo/exit_phi_accesses-2.ll index 928b564c7cef5..b3b7cb1c65993 100644 --- a/polly/test/ScopInfo/exit_phi_accesses-2.ll +++ b/polly/test/ScopInfo/exit_phi_accesses-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK-LABEL: Function: foo ; diff --git a/polly/test/ScopInfo/exit_phi_accesses.ll b/polly/test/ScopInfo/exit_phi_accesses.ll index a54ca4a185ae2..77b038ec8e4af 100644 --- a/polly/test/ScopInfo/exit_phi_accesses.ll +++ b/polly/test/ScopInfo/exit_phi_accesses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Check that PHI nodes only create PHI access and nothing else (e.g. unnecessary ; SCALAR accesses). In this case, for a PHI in the exit node, hence there is no diff --git a/polly/test/ScopInfo/expensive-boundary-context.ll b/polly/test/ScopInfo/expensive-boundary-context.ll index c0d2dcd16289d..95212f83acdca 100644 --- a/polly/test/ScopInfo/expensive-boundary-context.ll +++ b/polly/test/ScopInfo/expensive-boundary-context.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output \ +; RUN: < %s 2>&1 | FileCheck %s ; CHECK-NOT: Assumed Context: target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll b/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll index 2f446b630168a..5e833e7ae0f4f 100644 --- a/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll +++ b/polly/test/ScopInfo/extract_constant_factor_introduces_new_parameter.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; CHECK: Valid Region for Scop: bb10 => bb16 diff --git a/polly/test/ScopInfo/full-function.ll b/polly/test/ScopInfo/full-function.ll index 20cb137181697..596c3d0af66a9 100644 --- a/polly/test/ScopInfo/full-function.ll +++ b/polly/test/ScopInfo/full-function.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-detect-full-functions < %s 2>&1 | FileCheck %s -check-prefix=FULL -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=WITHOUT-FULL +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -polly-detect-full-functions < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=FULL +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=WITHOUT-FULL ; FULL: Region: %bb---FunctionExit ; FULL: Statements { diff --git a/polly/test/ScopInfo/granularity_same_name.ll b/polly/test/ScopInfo/granularity_same_name.ll index 638b09879ce39..17f75fbf8a979 100644 --- a/polly/test/ScopInfo/granularity_same_name.ll +++ b/polly/test/ScopInfo/granularity_same_name.ll @@ -1,7 +1,7 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-use-llvm-names=0 '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=IDX -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-use-llvm-names=1 '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=BB -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-use-llvm-names=0 '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=IDX -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-use-llvm-names=1 '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=BB +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-use-llvm-names=0 '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=IDX +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-use-llvm-names=1 '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=BB +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-use-llvm-names=0 '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=IDX +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-use-llvm-names=1 '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines -check-prefix=BB ; ; Check that the statement has the same name, regardless of how the ; basic block is split into multiple statements. diff --git a/polly/test/ScopInfo/granularity_scalar-indep.ll b/polly/test/ScopInfo/granularity_scalar-indep.ll index f4d864d2c6543..5c4484f9d4579 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Split a block into two independent statements that share no scalar. ; This case has the instructions of the two statements interleaved, such that diff --git a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll index f2c37f6293d62..7ae0d961b38fb 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Two PHIs, cross-referencing each other. The PHI READs must be carried-out ; before the PHI WRITEs to ensure that the value when entering the block is diff --git a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll index f7bd882da96e2..7839e51c163ae 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_cross-referencing-phi2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Two PHIs, cross-referencing each other. The PHI READs must be carried-out ; before the PHI WRITEs to ensure that the value when entering the block is diff --git a/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll b/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll index 80aa9fb6deb7c..8643e85e05593 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_epilogue.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Split a block into two independent statements that share no scalar. ; This case has an independent statement just for PHI writes. diff --git a/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll b/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll index 66ef9fa9429e9..bc71cbe45cd98 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_epilogue_last.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; Check that the PHI Write of value that is defined in the same basic ; block is in the statement where it is defined. diff --git a/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll b/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll index 3837219e5d818..f3864bac519b9 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_noepilogue.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; This case has no explicit epilogue for PHI writes because it would ; have a scalar dependency to the previous statement. diff --git a/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll b/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll index c43ad76d079d8..43101a8a0abfc 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_ordered-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; This case should be split into two statements because {X[0], Y[0]} ; and {A[0], B[0]} do not intersect. diff --git a/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll b/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll index cfa7739d743f7..4974f7e9b28ca 100644 --- a/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll +++ b/polly/test/ScopInfo/granularity_scalar-indep_ordered.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; ; This case cannot be split into two statements because the order of ; loads and store would be violated. diff --git a/polly/test/ScopInfo/i1_params.ll b/polly/test/ScopInfo/i1_params.ll index cf5b533c02682..be3e287372017 100644 --- a/polly/test/ScopInfo/i1_params.ll +++ b/polly/test/ScopInfo/i1_params.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that both a signed as well as an unsigned extended i1 parameter ; is represented correctly. diff --git a/polly/test/ScopInfo/infeasible-rtc.ll b/polly/test/ScopInfo/infeasible-rtc.ll index 9221ddf5fc910..7a0bfe0fa4d84 100644 --- a/polly/test/ScopInfo/infeasible-rtc.ll +++ b/polly/test/ScopInfo/infeasible-rtc.ll @@ -1,6 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DETECT +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=DETECT -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=SCOPS target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/infeasible_invalid_context.ll b/polly/test/ScopInfo/infeasible_invalid_context.ll index 7ab6477460721..006901ab05b79 100644 --- a/polly/test/ScopInfo/infeasible_invalid_context.ll +++ b/polly/test/ScopInfo/infeasible_invalid_context.ll @@ -1,6 +1,8 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DETECT +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=DETECT -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCOPS +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=SCOPS ; DETECT: Valid Region for Scop: if.end116 => for.inc216 ; SCOPS-NOT: Statements diff --git a/polly/test/ScopInfo/int2ptr_ptr2int.ll b/polly/test/ScopInfo/int2ptr_ptr2int.ll index adefe794561c2..578015aeecdc5 100644 --- a/polly/test/ScopInfo/int2ptr_ptr2int.ll +++ b/polly/test/ScopInfo/int2ptr_ptr2int.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S '-passes=polly' < %s 2>&1 | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen < %s 2>&1 | FileCheck %s --check-prefix=IR ; ; void f(long *A, long *ptr, long val) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/int2ptr_ptr2int_2.ll b/polly/test/ScopInfo/int2ptr_ptr2int_2.ll index a88fcdc0f9b12..627524c0327dd 100644 --- a/polly/test/ScopInfo/int2ptr_ptr2int_2.ll +++ b/polly/test/ScopInfo/int2ptr_ptr2int_2.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S '-passes=polly' -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -passes=polly-codegen \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s --check-prefix=IR ; ; void f(long *A, long *B, long *ptr, long val) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/integers.ll b/polly/test/ScopInfo/integers.ll index 5f89243be0e3b..4f6d1117e2bcc 100644 --- a/polly/test/ScopInfo/integers.ll +++ b/polly/test/ScopInfo/integers.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Check that we correctly convert integers to isl values. diff --git a/polly/test/ScopInfo/inter-error-bb-dependence.ll b/polly/test/ScopInfo/inter-error-bb-dependence.ll index 0829f34be9791..761fcbbe3435e 100644 --- a/polly/test/ScopInfo/inter-error-bb-dependence.ll +++ b/polly/test/ScopInfo/inter-error-bb-dependence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 > /dev/null | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 > /dev/null | FileCheck %s ; ; Error statements (%bb33) do not require their uses to be verified. ; In this case it uses %tmp32 from %bb31 which is not available because diff --git a/polly/test/ScopInfo/inter_bb_scalar_dep.ll b/polly/test/ScopInfo/inter_bb_scalar_dep.ll index f6406640dd2d8..7313618b082bc 100644 --- a/polly/test/ScopInfo/inter_bb_scalar_dep.ll +++ b/polly/test/ScopInfo/inter_bb_scalar_dep.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], int N, int *init_ptr) { ; long i, j; diff --git a/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll b/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll index 3150204cd9549..d2ed3c17fe9dd 100644 --- a/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll +++ b/polly/test/ScopInfo/intra-non-affine-stmt-phi-node.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: < %s 2>&1 | FileCheck %s ; CHECK: Statements { ; CHECK-NEXT: Stmt_loop__TO__backedge diff --git a/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll b/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll index b0b63658caa55..b3286cd2a7240 100644 --- a/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll +++ b/polly/test/ScopInfo/intra_and_inter_bb_scalar_dep.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; void f(long A[], int N, int *init_ptr) { ; long i, j; diff --git a/polly/test/ScopInfo/intra_bb_scalar_dep.ll b/polly/test/ScopInfo/intra_bb_scalar_dep.ll index 0ef6b2d35106b..86855e7499a51 100644 --- a/polly/test/ScopInfo/intra_bb_scalar_dep.ll +++ b/polly/test/ScopInfo/intra_bb_scalar_dep.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; void f(long A[], int N, int *init_ptr) { ; long i, j; diff --git a/polly/test/ScopInfo/intrinsics.ll b/polly/test/ScopInfo/intrinsics.ll index e17d06f753a21..e6d9e733e35bf 100644 --- a/polly/test/ScopInfo/intrinsics.ll +++ b/polly/test/ScopInfo/intrinsics.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-print-instructions -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-print-instructions -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we remove the ignored intrinsics from the instruction list. ; diff --git a/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll b/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll index d3439d8d33662..723942668d8c2 100644 --- a/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll +++ b/polly/test/ScopInfo/invalid_add_rec_after_invariant_load_remapping.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; ; This crashed at some point as we place %1 and %4 in the same equivalence class ; for invariant loads and when we remap SCEVs to use %4 instead of %1 AddRec SCEVs diff --git a/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll b/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll index ff5b0f601d03f..c493c22af32d9 100644 --- a/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll +++ b/polly/test/ScopInfo/invalidate_iterator_during_MA_removal.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; ; Check that no invalidated iterator is accessed while elements from ; the list of MemoryAccesses are removed. diff --git a/polly/test/ScopInfo/invariant-load-instlist.ll b/polly/test/ScopInfo/invariant-load-instlist.ll index 1ec36e6d9d1b9..ecb80e4054c35 100644 --- a/polly/test/ScopInfo/invariant-load-instlist.ll +++ b/polly/test/ScopInfo/invariant-load-instlist.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; The load is a required invariant load and at the same time used in a store. ; Polly used to add two MemoryAccesses for it which caused an assertion to fail. diff --git a/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll b/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll index 2d14287d4df44..89eac6ce69a11 100644 --- a/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll +++ b/polly/test/ScopInfo/invariant-loads-leave-read-only-statements.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s ; CHECK: Statements { ; CHECK-NEXT: Stmt_L_4 diff --git a/polly/test/ScopInfo/invariant_load.ll b/polly/test/ScopInfo/invariant_load.ll index 8974b7f7fb8cb..9dc064276c40f 100644 --- a/polly/test/ScopInfo/invariant_load.ll +++ b/polly/test/ScopInfo/invariant_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll index 7b5a7591813a6..40aa3098683b3 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; struct { ; int a; diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll index 0c2f57dfcb1c3..287676024079c 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; struct { ; int a; diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer.ll index 865bd789db6fb..cb745b4920b82 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; int U; ; void f(int *A) { diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll index f63fe9cc1f7c6..fa5429d4803a8 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; int U; ; int f(int *A) { diff --git a/polly/test/ScopInfo/invariant_load_addrec_sum.ll b/polly/test/ScopInfo/invariant_load_addrec_sum.ll index e70aa80ae6009..2e639f7d5e331 100644 --- a/polly/test/ScopInfo/invariant_load_addrec_sum.ll +++ b/polly/test/ScopInfo/invariant_load_addrec_sum.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Region: %entry.split---%if.end ; CHECK: Invariant Accesses: { diff --git a/polly/test/ScopInfo/invariant_load_base_pointer.ll b/polly/test/ScopInfo/invariant_load_base_pointer.ll index 1176d1ca9db85..f2539af97a0b7 100644 --- a/polly/test/ScopInfo/invariant_load_base_pointer.ll +++ b/polly/test/ScopInfo/invariant_load_base_pointer.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll b/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll index 81fd3b9559f43..f854b1f48ea92 100644 --- a/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll +++ b/polly/test/ScopInfo/invariant_load_base_pointer_conditional.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll b/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll index 7313176aceed7..5a9c5c6cabbe6 100644 --- a/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll +++ b/polly/test/ScopInfo/invariant_load_base_pointer_in_conditional.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_branch_condition.ll b/polly/test/ScopInfo/invariant_load_branch_condition.ll index f6cadffe311e8..d12750c30ba98 100644 --- a/polly/test/ScopInfo/invariant_load_branch_condition.ll +++ b/polly/test/ScopInfo/invariant_load_branch_condition.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll index 76cc55767caca..34d50a18663c4 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; CHECK: Stmt_body1 ; CHECK-NEXT: Domain := diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll index 9cc9391b6bc25..51f3cf6c095ac 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_2.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Make sure we choose a canonical element that is not the first invariant load, ; but the first that is an array base pointer. diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll index 7f609f9a54689..3a742bbccdf19 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_3.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Verify that we canonicalize accesses even tough one of the accesses (even ; the canonical base) has a partial execution context. This is correct as diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll index 216e0760987cd..6bd8b3146e871 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Verify that a delinearized and a not delinearized access are not ; canonicalized. diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll index 5da3d0ceb2d0f..cb7e5646fc2b0 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4b.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Verify that two arrays delinearized with different sizes are not coalesced. diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll index b71a092a2d468..6f7fbacc089cb 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_4c.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Verify that arrays with different element types are not coalesced. diff --git a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll index 2c4683ea5ce96..445832822bdf0 100644 --- a/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll +++ b/polly/test/ScopInfo/invariant_load_canonicalize_array_baseptrs_5.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: -polly-invariant-load-hoisting \ +; RUN: | FileCheck %s ; Verify that nested arrays with invariant base pointers are handled correctly. ; Specifically, we currently do not canonicalize arrays where some accesses are diff --git a/polly/test/ScopInfo/invariant_load_complex_condition.ll b/polly/test/ScopInfo/invariant_load_complex_condition.ll index e6ea032004a96..11e7088d68dbd 100644 --- a/polly/test/ScopInfo/invariant_load_complex_condition.ll +++ b/polly/test/ScopInfo/invariant_load_complex_condition.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -S '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -S '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/invariant_load_condition.ll b/polly/test/ScopInfo/invariant_load_condition.ll index 8b1dc8be87c86..c7d7b3c9ba611 100644 --- a/polly/test/ScopInfo/invariant_load_condition.ll +++ b/polly/test/ScopInfo/invariant_load_condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_dereferenceable.ll b/polly/test/ScopInfo/invariant_load_dereferenceable.ll index fc5527c48c411..526bdc6ddb3bd 100644 --- a/polly/test/ScopInfo/invariant_load_dereferenceable.ll +++ b/polly/test/ScopInfo/invariant_load_dereferenceable.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; CHECK-NOT: Function: foo_undereferanceable diff --git a/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll b/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll index b5525a8e2639e..eb148063320e7 100644 --- a/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll +++ b/polly/test/ScopInfo/invariant_load_distinct_parameter_valuations.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not consolidate the invariant loads to smp[order - 1] and ; smp[order - 2] in the blocks %0 and %16. While they have the same pointer diff --git a/polly/test/ScopInfo/invariant_load_in_non_affine.ll b/polly/test/ScopInfo/invariant_load_in_non_affine.ll index 69a7932fd3f58..5261113f5a0cf 100644 --- a/polly/test/ScopInfo/invariant_load_in_non_affine.ll +++ b/polly/test/ScopInfo/invariant_load_in_non_affine.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; ; CHECK-NOT: Valid Region for Scop ; diff --git a/polly/test/ScopInfo/invariant_load_loop_ub.ll b/polly/test/ScopInfo/invariant_load_loop_ub.ll index 9258d75f6e294..ee889e6c4d5a1 100644 --- a/polly/test/ScopInfo/invariant_load_loop_ub.ll +++ b/polly/test/ScopInfo/invariant_load_loop_ub.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -polly-process-unprofitable -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll b/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll index 50b0103b73efb..6af7caecc0b37 100644 --- a/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll +++ b/polly/test/ScopInfo/invariant_load_ptr_ptr_noalias.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=tbaa '-passes=print' -polly-invariant-load-hoisting=true -polly-ignore-aliasing \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; Note: The order of the invariant accesses is important because A is the ; base pointer of tmp3 and we will generate code in the same order as diff --git a/polly/test/ScopInfo/invariant_load_scalar_dep.ll b/polly/test/ScopInfo/invariant_load_scalar_dep.ll index ae1423e1e5f05..319f24bdcb920 100644 --- a/polly/test/ScopInfo/invariant_load_scalar_dep.ll +++ b/polly/test/ScopInfo/invariant_load_scalar_dep.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_load_stmt_domain.ll b/polly/test/ScopInfo/invariant_load_stmt_domain.ll index 8062d875b1174..715948062c055 100644 --- a/polly/test/ScopInfo/invariant_load_stmt_domain.ll +++ b/polly/test/ScopInfo/invariant_load_stmt_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; This test case verifies that the statement domain of the invariant access ; is the universe. In earlier versions of Polly, we accidentally computed an diff --git a/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll b/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll index 9ee4a54168a68..a6108320d5608 100644 --- a/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll +++ b/polly/test/ScopInfo/invariant_load_zext_parameter-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -scalar-evolution-max-value-compare-depth=3 '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -scalar-evolution-max-value-compare-depth=3 '-passes=polly' -polly-invariant-load-hoisting=true -disable-output < %s +; RUN: opt %loadNPMPolly -scalar-evolution-max-value-compare-depth=3 '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -scalar-evolution-max-value-compare-depth=3 -passes=polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s ; ; Stress test for the code generation of invariant accesses. ; diff --git a/polly/test/ScopInfo/invariant_load_zext_parameter.ll b/polly/test/ScopInfo/invariant_load_zext_parameter.ll index 5bd2c51d86fa6..e3c183aab5e26 100644 --- a/polly/test/ScopInfo/invariant_load_zext_parameter.ll +++ b/polly/test/ScopInfo/invariant_load_zext_parameter.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN ; ; void f(int *I0, int *I1, int *V) { ; for (int i = 0; i < 1000; i++) { diff --git a/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll b/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll index 426c14c191dd1..b5168e912ed74 100644 --- a/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll +++ b/polly/test/ScopInfo/invariant_load_zextended_in_own_execution_context.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s ; ; CHECK: Execution Context: [p_0_loaded_from_currpc] -> { : } ; diff --git a/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll b/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll index 77f74df7d7b21..85360821078dc 100644 --- a/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll +++ b/polly/test/ScopInfo/invariant_loads_complicated_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll b/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll index f18534d5bee24..134eac22bff5c 100644 --- a/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll +++ b/polly/test/ScopInfo/invariant_loads_cyclic_dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Negative test. If we assume UB[*V] to be invariant we get a cyclic ; dependence in the invariant loads that needs to be resolved by diff --git a/polly/test/ScopInfo/invariant_loop_bounds.ll b/polly/test/ScopInfo/invariant_loop_bounds.ll index dcf7f50eb27c4..f22199cfe4942 100644 --- a/polly/test/ScopInfo/invariant_loop_bounds.ll +++ b/polly/test/ScopInfo/invariant_loop_bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll index df5798638ba7c..e3292b4e4aefa 100644 --- a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll +++ b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we only have one parameter and one invariant load for all ; three loads that occur in the region but actually access the same diff --git a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll index 3d8c232c75970..d69438de5817f 100644 --- a/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll +++ b/polly/test/ScopInfo/invariant_same_loop_bound_multiple_times-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we only have one parameter and one invariant load for all ; three loads that occur in the region but actually access the same diff --git a/polly/test/ScopInfo/isl_aff_out_of_bounds.ll b/polly/test/ScopInfo/isl_aff_out_of_bounds.ll index 965531f20b01d..2df96faf76249 100644 --- a/polly/test/ScopInfo/isl_aff_out_of_bounds.ll +++ b/polly/test/ScopInfo/isl_aff_out_of_bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect < %s 2>&1 +; RUN: opt %loadNPMPolly '-passes=print' < %s 2>&1 ; Used to fail with: ; ../../isl/isl_aff.c:591: position out of bounds diff --git a/polly/test/ScopInfo/isl_trip_count_01.ll b/polly/test/ScopInfo/isl_trip_count_01.ll index 79621ce64bbcc..480b6e9574a66 100644 --- a/polly/test/ScopInfo/isl_trip_count_01.ll +++ b/polly/test/ScopInfo/isl_trip_count_01.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: [M, N] -> { Stmt_while_body[i0] : i0 > 0 and 4i0 <= -M + N; Stmt_while_body[0] }; ; diff --git a/polly/test/ScopInfo/isl_trip_count_02.ll b/polly/test/ScopInfo/isl_trip_count_02.ll index 3052299277844..b78fb838edd0f 100644 --- a/polly/test/ScopInfo/isl_trip_count_02.ll +++ b/polly/test/ScopInfo/isl_trip_count_02.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; TODO: We do not allow unbounded loops at the moment. ; diff --git a/polly/test/ScopInfo/isl_trip_count_03.ll b/polly/test/ScopInfo/isl_trip_count_03.ll index 52fde263d6898..96df05f89bcff 100644 --- a/polly/test/ScopInfo/isl_trip_count_03.ll +++ b/polly/test/ScopInfo/isl_trip_count_03.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Test comes from a bug (15771) or better a feature request. It was not allowed ; in Polly in the old domain generation as ScalarEvolution cannot figure out the diff --git a/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll b/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll index 657b8f6dc64e1..fd310ececaa38 100644 --- a/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll +++ b/polly/test/ScopInfo/isl_trip_count_multiple_exiting_blocks.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/licm_load.ll b/polly/test/ScopInfo/licm_load.ll index 8f1cf4fa8fd91..ade640976d007 100644 --- a/polly/test/ScopInfo/licm_load.ll +++ b/polly/test/ScopInfo/licm_load.ll @@ -1,4 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes='loop(loop-rotate,indvars),polly-prepare,print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s +; RUN: opt %loadNPMPolly -passes='loop-mssa(loop-rotate,indvars,licm),polly-prepare,print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s ; ; void foo(int n, float A[static const restrict n], ; float B[static const restrict n], int j) { @@ -11,30 +14,26 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define void @foo(i32 %n, ptr noalias nonnull %A, ptr noalias nonnull %B, i32 %j) { entry: %tmp = sext i32 %n to i64 - %cmp1 = icmp slt i64 0, %tmp - br i1 %cmp1, label %for.body.lr.ph, label %for.end + br label %for.cond -for.body.lr.ph: ; preds = %entry +for.cond: ; preds = %for.inc, %entry + %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ] + %cmp = icmp slt i64 %indvars.iv, %tmp + br i1 %cmp, label %for.body, label %for.end + +for.body: ; preds = %for.cond %idxprom = sext i32 %j to i64 %arrayidx = getelementptr inbounds float, ptr %B, i64 %idxprom %tmp2 = load i32, ptr %arrayidx, align 4 - br label %for.body - -for.body: ; preds = %for.body.lr.ph, %for.inc - %indvars.iv2 = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.inc ] - %arrayidx2 = getelementptr inbounds float, ptr %A, i64 %indvars.iv2 + %arrayidx2 = getelementptr inbounds float, ptr %A, i64 %indvars.iv store i32 %tmp2, ptr %arrayidx2, align 4 br label %for.inc for.inc: ; preds = %for.body - %indvars.iv.next = add nuw nsw i64 %indvars.iv2, 1 - %exitcond = icmp ne i64 %indvars.iv.next, %tmp - br i1 %exitcond, label %for.body, label %for.cond.for.end_crit_edge - -for.cond.for.end_crit_edge: ; preds = %for.inc - br label %for.end + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + br label %for.cond -for.end: ; preds = %for.cond.for.end_crit_edge, %entry +for.end: ; preds = %for.cond ret void } diff --git a/polly/test/ScopInfo/licm_potential_store.ll b/polly/test/ScopInfo/licm_potential_store.ll index cbd8e410ed7c8..8a36ee84313a2 100644 --- a/polly/test/ScopInfo/licm_potential_store.ll +++ b/polly/test/ScopInfo/licm_potential_store.ll @@ -1,4 +1,10 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -tailcallopt -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NOLICM +; RUN: opt %loadNPMPolly -passes='sroa,instcombine,simplifycfg,reassociate,loop(loop-rotate),instcombine,indvars,polly-prepare,print' \ +; RUN: -tailcallopt -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s --check-prefix=NOLICM + +; RUN: opt %loadNPMPolly -passes='sroa,instcombine,simplifycfg,reassociate,loop(loop-rotate),instcombine,indvars,loop-mssa(licm),polly-prepare,print' \ +; RUN: -tailcallopt -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s --check-prefix=LICM ; void foo(int n, float A[static const restrict n], float x) { ; // (0) @@ -11,40 +17,67 @@ ; // (4) ; } +; LICM: Statements ; NOLICM: Statements target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define void @foo(i32 %n, ptr noalias nonnull %A, float %x) { entry: - %smax = call i32 @llvm.smax.i32(i32 %n, i32 0) - %0 = add nuw i32 %smax, 1 - br label %for.cond.1.preheader + %n.addr = alloca i32, align 4 + %A.addr = alloca ptr, align 8 + %x.addr = alloca float, align 4 + %i = alloca i32, align 4 + %j = alloca i32, align 4 + store i32 %n, ptr %n.addr, align 4 + store ptr %A, ptr %A.addr, align 8 + store float %x, ptr %x.addr, align 4 + %tmp = load i32, ptr %n.addr, align 4 + %tmp1 = zext i32 %tmp to i64 + store i32 0, ptr %i, align 4 + br label %for.cond + +for.cond: ; preds = %for.inc.4, %entry + %tmp2 = load i32, ptr %i, align 4 + %cmp = icmp slt i32 %tmp2, 5 + br i1 %cmp, label %for.body, label %for.end.6 -for.cond.1.preheader: ; preds = %entry, %for.end - %i.05 = phi i32 [ 0, %entry ], [ %add5, %for.end ] - %x.addr.04 = phi float [ %x, %entry ], [ %x.addr.1.lcssa, %for.end ] +for.body: ; preds = %for.cond + store i32 0, ptr %j, align 4 br label %for.cond.1 -for.cond.1: ; preds = %for.cond.1, %for.cond.1.preheader - %x.addr.1 = phi float [ 7.000000e+00, %for.cond.1 ], [ %x.addr.04, %for.cond.1.preheader ] - %j.0 = phi i32 [ %add, %for.cond.1 ], [ 0, %for.cond.1.preheader ] - %add = add nuw i32 %j.0, 1 - %exitcond = icmp ne i32 %add, %0 - br i1 %exitcond, label %for.cond.1, label %for.end +for.cond.1: ; preds = %for.inc, %for.body + %tmp3 = load i32, ptr %j, align 4 + %tmp4 = load i32, ptr %n.addr, align 4 + %cmp2 = icmp slt i32 %tmp3, %tmp4 + br i1 %cmp2, label %for.body.3, label %for.end + +for.body.3: ; preds = %for.cond.1 + store float 7.000000e+00, ptr %x.addr, align 4 + br label %for.inc + +for.inc: ; preds = %for.body.3 + %tmp5 = load i32, ptr %j, align 4 + %add = add nsw i32 %tmp5, 1 + store i32 %add, ptr %j, align 4 + br label %for.cond.1 for.end: ; preds = %for.cond.1 - %x.addr.1.lcssa = phi float [ %x.addr.1, %for.cond.1 ] - store float %x.addr.1.lcssa, ptr %A, align 4 - %add5 = add nuw nsw i32 %i.05, 1 - %exitcond6 = icmp ne i32 %add5, 5 - br i1 %exitcond6, label %for.cond.1.preheader, label %for.end.6 + %tmp6 = load float, ptr %x.addr, align 4 + %tmp7 = load ptr, ptr %A.addr, align 8 + store float %tmp6, ptr %tmp7, align 4 + br label %for.inc.4 + +for.inc.4: ; preds = %for.end + %tmp8 = load i32, ptr %i, align 4 + %add5 = add nsw i32 %tmp8, 1 + store i32 %add5, ptr %i, align 4 + br label %for.cond -for.end.6: ; preds = %for.end +for.end.6: ; preds = %for.cond ret void } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #0 - -attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +; CHECK: Statements { +; CHECK: Stmt_for_end +; CHECK: } diff --git a/polly/test/ScopInfo/licm_potential_store_mssa.ll b/polly/test/ScopInfo/licm_potential_store_mssa.ll deleted file mode 100644 index ce785d622fcb3..0000000000000 --- a/polly/test/ScopInfo/licm_potential_store_mssa.ll +++ /dev/null @@ -1,50 +0,0 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -tailcallopt -disable-output < %s 2>&1 | FileCheck %s --check-prefix=LICM - -; void foo(int n, float A[static const restrict n], float x) { -; // (0) -; for (int i = 0; i < 5; i += 1) { -; for (int j = 0; j < n; j += 1) { -; x = 7; // (1) -; } -; A[0] = x; // (3) -; } -; // (4) -; } - -; LICM: Statements - -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" - -define void @foo(i32 %n, ptr noalias nonnull %A, float %x) { -entry: - %smax = call i32 @llvm.smax.i32(i32 %n, i32 0) - br label %for.cond.1.preheader - -for.cond.1.preheader: ; preds = %for.end, %entry - %i.05 = phi i32 [ 0, %entry ], [ %add5, %for.end ] - %x.addr.04 = phi float [ %x, %entry ], [ %x.addr.1.lcssa, %for.end ] - br label %for.cond.1 - -for.cond.1: ; preds = %for.cond.1, %for.cond.1.preheader - %x.addr.1 = phi float [ 7.000000e+00, %for.cond.1 ], [ %x.addr.04, %for.cond.1.preheader ] - %j.0 = phi i32 [ %add, %for.cond.1 ], [ 0, %for.cond.1.preheader ] - %add = add nuw i32 %j.0, 1 - %exitcond.not = icmp eq i32 %j.0, %smax - br i1 %exitcond.not, label %for.end, label %for.cond.1 - -for.end: ; preds = %for.cond.1 - %x.addr.1.lcssa = phi float [ %x.addr.1, %for.cond.1 ] - %add5 = add nuw nsw i32 %i.05, 1 - %exitcond6.not = icmp eq i32 %add5, 5 - br i1 %exitcond6.not, label %for.end.6, label %for.cond.1.preheader - -for.end.6: ; preds = %for.end - %x.addr.1.lcssa.lcssa = phi float [ %x.addr.1.lcssa, %for.end ] - store float %x.addr.1.lcssa.lcssa, ptr %A, align 4 - ret void -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #0 - -attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } diff --git a/polly/test/ScopInfo/licm_reduction_nested.ll b/polly/test/ScopInfo/licm_reduction_nested.ll index 50625b2ddabde..c1676033fa909 100644 --- a/polly/test/ScopInfo/licm_reduction_nested.ll +++ b/polly/test/ScopInfo/licm_reduction_nested.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -loop-rotate -indvars '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -loop-rotate -indvars -licm '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -loop-rotate -indvars -passes=polly-prepare '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -loop-rotate -indvars -licm -passes=polly-prepare '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; XFAIL: * ; diff --git a/polly/test/ScopInfo/long-compile-time-alias-analysis.ll b/polly/test/ScopInfo/long-compile-time-alias-analysis.ll index 8225bd04fce63..f102518da5261 100644 --- a/polly/test/ScopInfo/long-compile-time-alias-analysis.ll +++ b/polly/test/ScopInfo/long-compile-time-alias-analysis.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; Verify that the compilation of this test case does not take infinite time. ; At some point Polly tried to model this test case and got stuck in diff --git a/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll b/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll index 064a0d3e700b9..e32748a4bbb57 100644 --- a/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll +++ b/polly/test/ScopInfo/long-sequence-of-error-blocks-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/ScopInfo/long-sequence-of-error-blocks.ll b/polly/test/ScopInfo/long-sequence-of-error-blocks.ll index edaadd61dc020..b32b87b5c3f3a 100644 --- a/polly/test/ScopInfo/long-sequence-of-error-blocks.ll +++ b/polly/test/ScopInfo/long-sequence-of-error-blocks.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/polly/test/ScopInfo/loop-multiexit-succ-cond.ll b/polly/test/ScopInfo/loop-multiexit-succ-cond.ll index 391f0ec8c0f59..431c907857fec 100644 --- a/polly/test/ScopInfo/loop-multiexit-succ-cond.ll +++ b/polly/test/ScopInfo/loop-multiexit-succ-cond.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s 2>&1 | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=IR ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/loop_affine_bound_0.ll b/polly/test/ScopInfo/loop_affine_bound_0.ll index fcd56613fc095..918d4099740ce 100644 --- a/polly/test/ScopInfo/loop_affine_bound_0.ll +++ b/polly/test/ScopInfo/loop_affine_bound_0.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long a[][128], long N, long M) { ; long i, j; diff --git a/polly/test/ScopInfo/loop_affine_bound_1.ll b/polly/test/ScopInfo/loop_affine_bound_1.ll index 392509871a9b7..8f7a87f1c5ac4 100644 --- a/polly/test/ScopInfo/loop_affine_bound_1.ll +++ b/polly/test/ScopInfo/loop_affine_bound_1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output< %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ;void f(long a[][128], long N, long M) { ; long i, j; diff --git a/polly/test/ScopInfo/loop_affine_bound_2.ll b/polly/test/ScopInfo/loop_affine_bound_2.ll index 665dc1ad244d9..2d9f997a0767f 100644 --- a/polly/test/ScopInfo/loop_affine_bound_2.ll +++ b/polly/test/ScopInfo/loop_affine_bound_2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long a[][128], long N, long M) { ; long i, j; diff --git a/polly/test/ScopInfo/loop_carry.ll b/polly/test/ScopInfo/loop_carry.ll index 579f43d874577..20ebbfbc8b49c 100644 --- a/polly/test/ScopInfo/loop_carry.ll +++ b/polly/test/ScopInfo/loop_carry.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/many-scalar-dependences.ll b/polly/test/ScopInfo/many-scalar-dependences.ll index ddad36065a5c8..5b003325ef0fb 100644 --- a/polly/test/ScopInfo/many-scalar-dependences.ll +++ b/polly/test/ScopInfo/many-scalar-dependences.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(float a[100][100]) { ; float x; diff --git a/polly/test/ScopInfo/max-loop-depth.ll b/polly/test/ScopInfo/max-loop-depth.ll index f33933210247d..71e9c02aa8dcc 100644 --- a/polly/test/ScopInfo/max-loop-depth.ll +++ b/polly/test/ScopInfo/max-loop-depth.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void bar(); ; void foo(int *A, int *B, long int N, long int M) { diff --git a/polly/test/ScopInfo/memcpy-raw-source.ll b/polly/test/ScopInfo/memcpy-raw-source.ll index 149a2fcfea772..6c45b0d41b76b 100644 --- a/polly/test/ScopInfo/memcpy-raw-source.ll +++ b/polly/test/ScopInfo/memcpy-raw-source.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa,scoped-noalias-aa,tbaa '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa,scoped-noalias-aa,tbaa '-passes=print' -disable-output < %s ; ; Ensure that ScopInfo's alias analysis llvm.memcpy for, ; like the AliasSetTracker, preserves bitcasts. diff --git a/polly/test/ScopInfo/memcpy.ll b/polly/test/ScopInfo/memcpy.ll index 6b7a9e2edffbe..95c455f097b21 100644 --- a/polly/test/ScopInfo/memcpy.ll +++ b/polly/test/ScopInfo/memcpy.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=polly' < %s 2>&1 | FileCheck --check-prefix=IR %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -aa-pipeline=basic-aa -polly-allow-differing-element-types -passes=polly-codegen < %s 2>&1 | FileCheck --check-prefix=IR %s ; ; CHECK: Arrays { ; CHECK-NEXT: i8 MemRef_A[*]; // Element size 1 diff --git a/polly/test/ScopInfo/memmove.ll b/polly/test/ScopInfo/memmove.ll index aba886b59d1d5..8ff471a11cd17 100644 --- a/polly/test/ScopInfo/memmove.ll +++ b/polly/test/ScopInfo/memmove.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=polly' < %s 2>&1 | FileCheck --check-prefix=IR %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-differing-element-types '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -aa-pipeline=basic-aa -polly-allow-differing-element-types -passes=polly-codegen < %s 2>&1 | FileCheck --check-prefix=IR %s ; ; CHECK: Arrays { ; CHECK-NEXT: i8 MemRef_A[*]; // Element size 1 diff --git a/polly/test/ScopInfo/memset.ll b/polly/test/ScopInfo/memset.ll index 7eaec7bd1ad6a..89b0487728210 100644 --- a/polly/test/ScopInfo/memset.ll +++ b/polly/test/ScopInfo/memset.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-differing-element-types '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -S -polly-allow-differing-element-types '-passes=polly' < %s 2>&1 | FileCheck --check-prefix=IR %s +; RUN: opt %loadNPMPolly -polly-allow-differing-element-types '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -S -polly-allow-differing-element-types -passes=polly-codegen < %s 2>&1 | FileCheck --check-prefix=IR %s ; ; CHECK: Arrays { ; CHECK-NEXT: i8 MemRef_A[*]; // Element size 1 diff --git a/polly/test/ScopInfo/memset_null.ll b/polly/test/ScopInfo/memset_null.ll index 7bd3e90b3aa82..9755cf1129e68 100644 --- a/polly/test/ScopInfo/memset_null.ll +++ b/polly/test/ScopInfo/memset_null.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-modref-calls '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-modref-calls -S '-passes=polly' < %s +; RUN: opt %loadNPMPolly -polly-allow-modref-calls '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-modref-calls -S -passes=polly-codegen < %s ; ; Verify we can handle a memset to "null" and that we do not model it. ; TODO: FIXME: We could use the undefined memset to optimize the code further, diff --git a/polly/test/ScopInfo/mismatching-array-dimensions.ll b/polly/test/ScopInfo/mismatching-array-dimensions.ll index cd12421344f7f..f825cbff1ec56 100644 --- a/polly/test/ScopInfo/mismatching-array-dimensions.ll +++ b/polly/test/ScopInfo/mismatching-array-dimensions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK-NOT: AssumedContext diff --git a/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll b/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll index 1e289425e86d7..6bc5f8d8eb73f 100644 --- a/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll +++ b/polly/test/ScopInfo/mod_ref_access_pointee_arguments.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly' -polly-allow-modref-calls -disable-output < %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -polly-allow-modref-calls \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb -passes=polly-codegen -polly-allow-modref-calls \ +; RUN: -disable-output < %s ; ; Verify that we model the may-write access of the prefetch intrinsic ; correctly, thus that A is accessed by it but B is not. diff --git a/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll b/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll index 0b6e64da437fd..21322bc648f8e 100644 --- a/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll +++ b/polly/test/ScopInfo/mod_ref_read_pointee_arguments.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -disable-output -polly-allow-modref-calls < %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -polly-allow-modref-calls \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -disable-output \ +; RUN: -polly-allow-modref-calls < %s ; ; Verify that we model the read access of the gcread intrinsic ; correctly, thus that A is read by it but B is not. diff --git a/polly/test/ScopInfo/mod_ref_read_pointer.ll b/polly/test/ScopInfo/mod_ref_read_pointer.ll index 25d59d9f7fd16..25e56a08a961b 100644 --- a/polly/test/ScopInfo/mod_ref_read_pointer.ll +++ b/polly/test/ScopInfo/mod_ref_read_pointer.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-allow-modref-calls -passes=polly-codegen -disable-output < %s ; ; Check that we assume the call to func has a read on the whole A array. ; diff --git a/polly/test/ScopInfo/mod_ref_read_pointers.ll b/polly/test/ScopInfo/mod_ref_read_pointers.ll index f8cbb084aefe8..5cc96cf3a06eb 100644 --- a/polly/test/ScopInfo/mod_ref_read_pointers.ll +++ b/polly/test/ScopInfo/mod_ref_read_pointers.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly' -disable-output -polly-allow-modref-calls < %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -polly-allow-modref-calls \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -passes=polly-codegen -disable-output \ +; RUN: -polly-allow-modref-calls < %s ; ; Check that the call to func will "read" not only the A array but also the ; B array. The reason is the readonly annotation of func. diff --git a/polly/test/ScopInfo/modulo_zext_1.ll b/polly/test/ScopInfo/modulo_zext_1.ll index a9b53d53aea7e..0a8957da4931a 100644 --- a/polly/test/ScopInfo/modulo_zext_1.ll +++ b/polly/test/ScopInfo/modulo_zext_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/modulo_zext_2.ll b/polly/test/ScopInfo/modulo_zext_2.ll index f86ddcea9fe2b..7af2411e7e8c4 100644 --- a/polly/test/ScopInfo/modulo_zext_2.ll +++ b/polly/test/ScopInfo/modulo_zext_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/modulo_zext_3.ll b/polly/test/ScopInfo/modulo_zext_3.ll index 21596d16a6e14..1dac723aa2c23 100644 --- a/polly/test/ScopInfo/modulo_zext_3.ll +++ b/polly/test/ScopInfo/modulo_zext_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/multi-scop.ll b/polly/test/ScopInfo/multi-scop.ll index 8647d89c91d7a..c6dc1f201efa2 100644 --- a/polly/test/ScopInfo/multi-scop.ll +++ b/polly/test/ScopInfo/multi-scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; This test case contains two scops. diff --git a/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll b/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll index 8785458e42f2c..bd46532d87f10 100644 --- a/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll +++ b/polly/test/ScopInfo/multidim_2d-diagonal-matrix.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll b/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll index 5de07bad6bd06..cdd46304c932b 100644 --- a/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll +++ b/polly/test/ScopInfo/multidim_2d_outer_parametric_offset.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll b/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll index 984f41cd1e9bf..0b735b9106189 100644 --- a/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll +++ b/polly/test/ScopInfo/multidim_2d_parametric_array_static_loop_bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/ScopInfo/multidim_2d_with_modref_call.ll b/polly/test/ScopInfo/multidim_2d_with_modref_call.ll index 96b822ad4aa86..befca87972c19 100644 --- a/polly/test/ScopInfo/multidim_2d_with_modref_call.ll +++ b/polly/test/ScopInfo/multidim_2d_with_modref_call.ll @@ -1,5 +1,9 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-modref-calls \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE ; TODO: We should delinearize the accesses despite the use in a call to a ; readonly function. For now we verify we do not delinearize them though. diff --git a/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll b/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll index c04cc200e06bd..cceb5353d74c0 100644 --- a/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll +++ b/polly/test/ScopInfo/multidim_2d_with_modref_call_2.ll @@ -1,5 +1,9 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-modref-calls \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE ; TODO: We should delinearize the accesses despite the use in a call to a ; readonly function. For now we verify we do not delinearize them though. diff --git a/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll b/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll index 2abd37c9f82d0..c957dd10ed652 100644 --- a/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll +++ b/polly/test/ScopInfo/multidim_3d_parametric_array_static_loop_bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o]) { diff --git a/polly/test/ScopInfo/multidim_fixedsize_different_dimensionality.ll b/polly/test/ScopInfo/multidim_fixedsize_different_dimensionality.ll index 47cbc0bb1c534..4a1ee3b1af51d 100644 --- a/polly/test/ScopInfo/multidim_fixedsize_different_dimensionality.ll +++ b/polly/test/ScopInfo/multidim_fixedsize_different_dimensionality.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; #define N 400 ; diff --git a/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll b/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll index e82869616d63c..9a6d8fbe12755 100644 --- a/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll +++ b/polly/test/ScopInfo/multidim_fixedsize_multi_offset.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Context: ; CHECK-NEXT: { : } diff --git a/polly/test/ScopInfo/multidim_fold_constant_dim.ll b/polly/test/ScopInfo/multidim_fold_constant_dim.ll index dde847bb8d4d7..9f47694022868 100644 --- a/polly/test/ScopInfo/multidim_fold_constant_dim.ll +++ b/polly/test/ScopInfo/multidim_fold_constant_dim.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; struct com { ; double Real; diff --git a/polly/test/ScopInfo/multidim_fold_constant_dim_zero.ll b/polly/test/ScopInfo/multidim_fold_constant_dim_zero.ll index 84222f73b7c6d..5778126ad8f17 100644 --- a/polly/test/ScopInfo/multidim_fold_constant_dim_zero.ll +++ b/polly/test/ScopInfo/multidim_fold_constant_dim_zero.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -debug -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -debug -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts diff --git a/polly/test/ScopInfo/multidim_fortran_2d.ll b/polly/test/ScopInfo/multidim_fortran_2d.ll index 10314606a8123..e5b005f17dcc7 100644 --- a/polly/test/ScopInfo/multidim_fortran_2d.ll +++ b/polly/test/ScopInfo/multidim_fortran_2d.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; subroutine init_array(ni, nj, pi, pj, a) ; implicit none diff --git a/polly/test/ScopInfo/multidim_fortran_2d_params.ll b/polly/test/ScopInfo/multidim_fortran_2d_params.ll index 992df969f9cc2..a7f7ebc130362 100644 --- a/polly/test/ScopInfo/multidim_fortran_2d_params.ll +++ b/polly/test/ScopInfo/multidim_fortran_2d_params.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-precise-fold-accesses -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-precise-fold-accesses \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; subroutine init_array(ni, nj, pi, pj, a) ; implicit none diff --git a/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll b/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll index 79fd4c286745e..5f3080a12fdbe 100644 --- a/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll +++ b/polly/test/ScopInfo/multidim_fortran_2d_with_modref_call.ll @@ -1,5 +1,9 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-modref-calls -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -polly-invariant-load-hoisting=true -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-modref-calls \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-allow-nonaffine \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -polly-allow-modref-calls -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE ; TODO: We should delinearize the accesses despite the use in a call to a ; readonly function. For now we verify we do not delinearize them though. diff --git a/polly/test/ScopInfo/multidim_fortran_srem.ll b/polly/test/ScopInfo/multidim_fortran_srem.ll index 62ff184f7a6b6..31cc633fa65c6 100644 --- a/polly/test/ScopInfo/multidim_fortran_srem.ll +++ b/polly/test/ScopInfo/multidim_fortran_srem.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; CHECK: Statements { diff --git a/polly/test/ScopInfo/multidim_gep_pointercast.ll b/polly/test/ScopInfo/multidim_gep_pointercast.ll index aa7932fb737f0..fd8048b11f14b 100644 --- a/polly/test/ScopInfo/multidim_gep_pointercast.ll +++ b/polly/test/ScopInfo/multidim_gep_pointercast.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The load access to A has a pointer-bitcast to another elements size before the ; GetElementPtr. Verify that we do not the GEP delinearization because it diff --git a/polly/test/ScopInfo/multidim_gep_pointercast2.ll b/polly/test/ScopInfo/multidim_gep_pointercast2.ll index 0475506fa9f1a..9daae4b1ce3db 100644 --- a/polly/test/ScopInfo/multidim_gep_pointercast2.ll +++ b/polly/test/ScopInfo/multidim_gep_pointercast2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that we do not use the GetElementPtr information to delinearize A ; because of the cast in-between. Use the single-dimensional modeling instead. diff --git a/polly/test/ScopInfo/multidim_invalid_dimension.ll b/polly/test/ScopInfo/multidim_invalid_dimension.ll index 1cf79f1bd8de1..e1ec2e1ce3be0 100644 --- a/polly/test/ScopInfo/multidim_invalid_dimension.ll +++ b/polly/test/ScopInfo/multidim_invalid_dimension.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64-unknown-linux-gnueabi" diff --git a/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll b/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll index 7779748c8c7f6..92b42a9e7a870 100644 --- a/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll +++ b/polly/test/ScopInfo/multidim_ivs_and_integer_offsets_3d.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o]) { diff --git a/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll b/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll index 49e0a9b60657b..261cba1e68aad 100644 --- a/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll +++ b/polly/test/ScopInfo/multidim_ivs_and_parameteric_offsets_3d.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-precise-fold-accesses '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-precise-fold-accesses '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o], long p, long q, long r) { diff --git a/polly/test/ScopInfo/multidim_many_references.ll b/polly/test/ScopInfo/multidim_many_references.ll index a4edc9e725ac4..f0f1c2b1f39db 100644 --- a/polly/test/ScopInfo/multidim_many_references.ll +++ b/polly/test/ScopInfo/multidim_many_references.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/multidim_nested_start_integer.ll b/polly/test/ScopInfo/multidim_nested_start_integer.ll index c98aece41a9e1..6ee9798a050d7 100644 --- a/polly/test/ScopInfo/multidim_nested_start_integer.ll +++ b/polly/test/ScopInfo/multidim_nested_start_integer.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o]) { diff --git a/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll b/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll index 12c8d97f5d63b..e238bddf4783b 100644 --- a/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll +++ b/polly/test/ScopInfo/multidim_nested_start_share_parameter.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o]) { diff --git a/polly/test/ScopInfo/multidim_only_ivs_2d.ll b/polly/test/ScopInfo/multidim_only_ivs_2d.ll index a9685d12eb178..33b321716edc3 100644 --- a/polly/test/ScopInfo/multidim_only_ivs_2d.ll +++ b/polly/test/ScopInfo/multidim_only_ivs_2d.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Derived from the following code: diff --git a/polly/test/ScopInfo/multidim_only_ivs_3d.ll b/polly/test/ScopInfo/multidim_only_ivs_3d.ll index bb9c302eaf06a..39ea4243d9426 100644 --- a/polly/test/ScopInfo/multidim_only_ivs_3d.ll +++ b/polly/test/ScopInfo/multidim_only_ivs_3d.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long n, long m, long o, double A[n][m][o]) { diff --git a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll index 7f0c8b12be9ba..7f7f7f91067e2 100644 --- a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll +++ b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void foo(int n, int m, int o, double A[n][m][o]) { ; diff --git a/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll b/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll index 797a037a6770e..1675110ffd6f1 100644 --- a/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll +++ b/polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; This test case checks for array access functions where the order in which the diff --git a/polly/test/ScopInfo/multidim_param_in_subscript-2.ll b/polly/test/ScopInfo/multidim_param_in_subscript-2.ll index 3a21702b36727..da9827fd5f2c6 100644 --- a/polly/test/ScopInfo/multidim_param_in_subscript-2.ll +++ b/polly/test/ScopInfo/multidim_param_in_subscript-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-precise-fold-accesses '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-precise-fold-accesses '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(long n, long m, float A[][n][m]) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/ScopInfo/multidim_param_in_subscript.ll b/polly/test/ScopInfo/multidim_param_in_subscript.ll index cc3fa87c8ba04..c86b5f0ae2386 100644 --- a/polly/test/ScopInfo/multidim_param_in_subscript.ll +++ b/polly/test/ScopInfo/multidim_param_in_subscript.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; ; void foo(long n, float A[][n]) { diff --git a/polly/test/ScopInfo/multidim_parameter_addrec_product.ll b/polly/test/ScopInfo/multidim_parameter_addrec_product.ll index 117671ddc6a22..da563a05560cd 100644 --- a/polly/test/ScopInfo/multidim_parameter_addrec_product.ll +++ b/polly/test/ScopInfo/multidim_parameter_addrec_product.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(float *A, long *p) { ; for (long i = 0; i < 100; i++) diff --git a/polly/test/ScopInfo/multidim_single_and_multidim_array.ll b/polly/test/ScopInfo/multidim_single_and_multidim_array.ll index 5ebe0daaec470..7059e5396987b 100644 --- a/polly/test/ScopInfo/multidim_single_and_multidim_array.ll +++ b/polly/test/ScopInfo/multidim_single_and_multidim_array.ll @@ -1,11 +1,11 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-delinearize=false -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-delinearize=false -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-delinearize=false -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-delinearize=false -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN +; RUN: opt %loadNPMPolly '-passes=print' -polly-delinearize=false -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-delinearize=false -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN +; RUN: opt %loadNPMPolly '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN +; RUN: opt %loadNPMPolly '-passes=print' -polly-delinearize=false -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-delinearize=false -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN +; RUN: opt %loadNPMPolly '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s --check-prefix=DELIN target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/multidim_srem.ll b/polly/test/ScopInfo/multidim_srem.ll index 5c1b0ea7e6150..88c8c6af648e0 100644 --- a/polly/test/ScopInfo/multidim_srem.ll +++ b/polly/test/ScopInfo/multidim_srem.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(long n, float A[][n][n]) { ; for (long i = 0; i < 200; i++) diff --git a/polly/test/ScopInfo/multidim_with_bitcast.ll b/polly/test/ScopInfo/multidim_with_bitcast.ll index 941ec637dba3d..0ab9c2d93ff46 100644 --- a/polly/test/ScopInfo/multidim_with_bitcast.ll +++ b/polly/test/ScopInfo/multidim_with_bitcast.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/multiple-binary-or-conditions.ll b/polly/test/ScopInfo/multiple-binary-or-conditions.ll index ecfc0012fd59f..65416e6fffda3 100644 --- a/polly/test/ScopInfo/multiple-binary-or-conditions.ll +++ b/polly/test/ScopInfo/multiple-binary-or-conditions.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -disable-output < %s ; ; void or(float *A, long n, long m) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll b/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll index 9ae664fd497c8..910e624adb50a 100644 --- a/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll +++ b/polly/test/ScopInfo/multiple-types-access-offset-not-dividable-by-element-size.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -pass-remarks-analysis=polly-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -pass-remarks-analysis="polly-scops" \ +; RUN: -polly-allow-differing-element-types \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; // For the following accesses the offset expression from the base pointer ; // is not always a multiple of the type size. diff --git a/polly/test/ScopInfo/multiple-types-non-affine-2.ll b/polly/test/ScopInfo/multiple-types-non-affine-2.ll index 6530dbf8d75be..cb0630da1b2e6 100644 --- a/polly/test/ScopInfo/multiple-types-non-affine-2.ll +++ b/polly/test/ScopInfo/multiple-types-non-affine-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=polly' -polly-allow-nonaffine -disable-output +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types -passes=polly-codegen -polly-allow-nonaffine -disable-output ; ; // Check that accessing one array with different types works, ; // even though some accesses are non-affine. diff --git a/polly/test/ScopInfo/multiple-types-non-affine.ll b/polly/test/ScopInfo/multiple-types-non-affine.ll index 7f5f995fd6d26..7349c5ae48ba2 100644 --- a/polly/test/ScopInfo/multiple-types-non-affine.ll +++ b/polly/test/ScopInfo/multiple-types-non-affine.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=polly' -polly-allow-nonaffine -disable-output +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types '-passes=print' -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-differing-element-types -passes=polly-codegen -polly-allow-nonaffine -disable-output ; ; // Check that accessing one array with different types works, ; // even though some accesses are non-affine. diff --git a/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll b/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll index 5890a5a2ea3bf..df280c88f8668 100644 --- a/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll +++ b/polly/test/ScopInfo/multiple-types-non-power-of-two-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s ; ; void multiple_types(i8 *A) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/multiple-types-non-power-of-two.ll b/polly/test/ScopInfo/multiple-types-non-power-of-two.ll index 3e8390aad300f..b9494187d0ff3 100644 --- a/polly/test/ScopInfo/multiple-types-non-power-of-two.ll +++ b/polly/test/ScopInfo/multiple-types-non-power-of-two.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s ; ; void multiple_types(i8 *A) { ; for (long i = 0; i < 100; i++) { diff --git a/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll b/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll index 4e71f9b5dd66b..e971ccc0ba448 100644 --- a/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll +++ b/polly/test/ScopInfo/multiple-types-two-dimensional-2.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -pass-remarks-analysis=polly-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-analysis="polly-scops" \ +; RUN: -polly-allow-differing-element-types \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; ; void foo(long n, long m, char A[][m]) { diff --git a/polly/test/ScopInfo/multiple-types-two-dimensional.ll b/polly/test/ScopInfo/multiple-types-two-dimensional.ll index 9899fe4bde7ed..34179508cae89 100644 --- a/polly/test/ScopInfo/multiple-types-two-dimensional.ll +++ b/polly/test/ScopInfo/multiple-types-two-dimensional.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -pass-remarks-analysis=polly-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-analysis="polly-scops" \ +; RUN: -polly-allow-differing-element-types \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(long n, long m, char A[][m]) { ; for (long i = 0; i < n; i++) diff --git a/polly/test/ScopInfo/multiple-types.ll b/polly/test/ScopInfo/multiple-types.ll index 753386575d33a..84d7d3349e29d 100644 --- a/polly/test/ScopInfo/multiple-types.ll +++ b/polly/test/ScopInfo/multiple-types.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' \ +; RUN: -polly-allow-differing-element-types -disable-output < %s 2>&1 | FileCheck %s ; ; // Check that accessing one array with different types works. ; void multiple_types(char *Short, char *Float, char *Double) { diff --git a/polly/test/ScopInfo/multiple_exiting_blocks.ll b/polly/test/ScopInfo/multiple_exiting_blocks.ll index 218e5c4108c90..b0c425ee62cc4 100644 --- a/polly/test/ScopInfo/multiple_exiting_blocks.ll +++ b/polly/test/ScopInfo/multiple_exiting_blocks.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll b/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll index d3a70fdb96130..ff0ec47be1c58 100644 --- a/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll +++ b/polly/test/ScopInfo/multiple_exiting_blocks_two_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/multiple_latch_blocks.ll b/polly/test/ScopInfo/multiple_latch_blocks.ll index 0aa25f4ad70f6..e5085daa2ca16 100644 --- a/polly/test/ScopInfo/multiple_latch_blocks.ll +++ b/polly/test/ScopInfo/multiple_latch_blocks.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Domain := ; CHECK: [N, P] -> { Stmt_if_end[i0] : 0 <= i0 < N and (i0 > P or i0 < P) }; diff --git a/polly/test/ScopInfo/nested-loops.ll b/polly/test/ScopInfo/nested-loops.ll index 7998a3896d9d4..91002979f4fa4 100644 --- a/polly/test/ScopInfo/nested-loops.ll +++ b/polly/test/ScopInfo/nested-loops.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" diff --git a/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll b/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll index f1ad40baf33ea..df010846bed20 100644 --- a/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll +++ b/polly/test/ScopInfo/no-scalar-deps-in-non-affine-subregion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not generate any scalar dependences regarding x. It is ; defined and used on the non-affine subregion only, thus we do not need diff --git a/polly/test/ScopInfo/non-affine-region-phi.ll b/polly/test/ScopInfo/non-affine-region-phi.ll index 0248004c27f50..3fb655e60f1c0 100644 --- a/polly/test/ScopInfo/non-affine-region-phi.ll +++ b/polly/test/ScopInfo/non-affine-region-phi.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -S < %s 2>&1 | FileCheck %s --check-prefix=CODE -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -S < %s 2>&1 | FileCheck %s --check-prefix=CODE +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify there is a phi in the non-affine region but it is not represented in ; the SCoP as all operands as well as the uses are inside the region too. diff --git a/polly/test/ScopInfo/non-affine-region-with-loop-2.ll b/polly/test/ScopInfo/non-affine-region-with-loop-2.ll index 158fe772c6d29..4c3ca4d21447d 100644 --- a/polly/test/ScopInfo/non-affine-region-with-loop-2.ll +++ b/polly/test/ScopInfo/non-affine-region-with-loop-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-allow-nonaffine-loops '-passes=print,print,scop(polly-codegen)' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Stmt_loop3 ; CHECK: Domain := diff --git a/polly/test/ScopInfo/non-affine-region-with-loop.ll b/polly/test/ScopInfo/non-affine-region-with-loop.ll index bcb542f2cbf70..f4c028ac23409 100644 --- a/polly/test/ScopInfo/non-affine-region-with-loop.ll +++ b/polly/test/ScopInfo/non-affine-region-with-loop.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly' -disable-output +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops -passes=polly-codegen -disable-output ; ; CHECK: Domain := ; CHECK-NEXT: { Stmt_loop2__TO__loop[] }; diff --git a/polly/test/ScopInfo/non-precise-inv-load-1.ll b/polly/test/ScopInfo/non-precise-inv-load-1.ll index d100b514a0be3..d55344b355f13 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-1.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we do hoist the invariant access to I with a execution context ; as the address computation might wrap in the original but not in our diff --git a/polly/test/ScopInfo/non-precise-inv-load-2.ll b/polly/test/ScopInfo/non-precise-inv-load-2.ll index fad8fcd918446..79ef3b88cb4f0 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-2.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; ; CHECK: Invariant Accesses: { diff --git a/polly/test/ScopInfo/non-precise-inv-load-3.ll b/polly/test/ScopInfo/non-precise-inv-load-3.ll index d032644c9e5ff..aa92847661165 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-3.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/non-precise-inv-load-4.ll b/polly/test/ScopInfo/non-precise-inv-load-4.ll index c1ba7ddc62584..2a2241cb5a993 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-4.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we hoist I[0] without execution context even though it ; is executed in a statement with an invalid domain. diff --git a/polly/test/ScopInfo/non-precise-inv-load-5.ll b/polly/test/ScopInfo/non-precise-inv-load-5.ll index c188b5f74b1e9..a414c7c0fed17 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-5.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we do not hoist I[c] without execution context because it ; is executed in a statement with an invalid domain and it depends diff --git a/polly/test/ScopInfo/non-precise-inv-load-6.ll b/polly/test/ScopInfo/non-precise-inv-load-6.ll index b1c19745f1424..1300617f00eeb 100644 --- a/polly/test/ScopInfo/non-precise-inv-load-6.ll +++ b/polly/test/ScopInfo/non-precise-inv-load-6.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we model the execution context correctly. ; diff --git a/polly/test/ScopInfo/non-pure-function-call.ll b/polly/test/ScopInfo/non-pure-function-call.ll index ad69141a12c66..81d43db5c3522 100644 --- a/polly/test/ScopInfo/non-pure-function-call.ll +++ b/polly/test/ScopInfo/non-pure-function-call.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll b/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll index 38e1c03a35227..6cbb41041be88 100644 --- a/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll +++ b/polly/test/ScopInfo/non-pure-function-calls-causes-dead-blocks.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Error blocks are skipped during SCoP detection. We skip them during ; SCoP formation too as they might contain instructions we can not handle. diff --git a/polly/test/ScopInfo/non-pure-function-calls.ll b/polly/test/ScopInfo/non-pure-function-calls.ll index d45c32ede7088..f97644052272d 100644 --- a/polly/test/ScopInfo/non-pure-function-calls.ll +++ b/polly/test/ScopInfo/non-pure-function-calls.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Allow the user to define function names that are treated as ; error functions and assumed not to be executed. diff --git a/polly/test/ScopInfo/non_affine_access.ll b/polly/test/ScopInfo/non_affine_access.ll index 0f5d9e7c43e4e..0338edf053297 100644 --- a/polly/test/ScopInfo/non_affine_access.ll +++ b/polly/test/ScopInfo/non_affine_access.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -polly-allow-nonaffine -disable-output < %s 2>&1 | FileCheck %s -check-prefix=NONAFFINE target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; void foo(long *A) { diff --git a/polly/test/ScopInfo/non_affine_region_1.ll b/polly/test/ScopInfo/non_affine_region_1.ll index 5934962f81567..8980a711b325d 100644 --- a/polly/test/ScopInfo/non_affine_region_1.ll +++ b/polly/test/ScopInfo/non_affine_region_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify only the incoming scalar x is modeled as a read in the non-affine ; region. diff --git a/polly/test/ScopInfo/non_affine_region_2.ll b/polly/test/ScopInfo/non_affine_region_2.ll index aa083616cac8e..b2e072f7a3bfa 100644 --- a/polly/test/ScopInfo/non_affine_region_2.ll +++ b/polly/test/ScopInfo/non_affine_region_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify the scalar x defined in a non-affine subregion is written as it ; escapes the region. In this test the two conditionals inside the region diff --git a/polly/test/ScopInfo/non_affine_region_3.ll b/polly/test/ScopInfo/non_affine_region_3.ll index b7c4c1b9bd545..d850cb5c95aad 100644 --- a/polly/test/ScopInfo/non_affine_region_3.ll +++ b/polly/test/ScopInfo/non_affine_region_3.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify the scalar x defined in a non-affine subregion is written as it ; escapes the region. In this test the two conditionals inside the region diff --git a/polly/test/ScopInfo/non_affine_region_4.ll b/polly/test/ScopInfo/non_affine_region_4.ll index 12cda0a53fb3b..c5309734a668e 100644 --- a/polly/test/ScopInfo/non_affine_region_4.ll +++ b/polly/test/ScopInfo/non_affine_region_4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify that both scalars (x and y) are properly written in the non-affine ; region and read afterwards. diff --git a/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll b/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll index a52aae0d59168..b1ce00f0df94e 100644 --- a/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll +++ b/polly/test/ScopInfo/nonaffine-buildMemoryAccess.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine-loops '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Domain := ; CHECK-NEXT: { Stmt_while_cond_i__TO__while_end_i[] }; diff --git a/polly/test/ScopInfo/not-a-reduction.ll b/polly/test/ScopInfo/not-a-reduction.ll index 84f6564ae4a2e..3a961b2dc1719 100644 --- a/polly/test/ScopInfo/not-a-reduction.ll +++ b/polly/test/ScopInfo/not-a-reduction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | not FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | not FileCheck %s ;#define TYPE float ;#define NUM 4 diff --git a/polly/test/ScopInfo/opaque-struct.ll b/polly/test/ScopInfo/opaque-struct.ll index 23b9d3caf741d..f4f79525069e5 100644 --- a/polly/test/ScopInfo/opaque-struct.ll +++ b/polly/test/ScopInfo/opaque-struct.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s ; ; Check that we do not crash with unsized (opaque) types. ; diff --git a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node-nonaffine-subregion.ll b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node-nonaffine-subregion.ll index e069ccac55340..eed27b1c4d9dd 100644 --- a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node-nonaffine-subregion.ll +++ b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node-nonaffine-subregion.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s 2>&1 | FileCheck %s ; ; Check whether %newval is identified as escaping value, even though it is used ; in a phi that is in the region. Non-affine subregion case. diff --git a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll index 27ea11a23a3fe..44da399e704d8 100644 --- a/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll +++ b/polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1] ; CHECK-NEXT: [p_0] -> { Stmt_bb3[] -> MemRef_tmp5[] }; diff --git a/polly/test/ScopInfo/parameter-constant-division.ll b/polly/test/ScopInfo/parameter-constant-division.ll index aaad0dfb2ee60..e5dd359158b8b 100644 --- a/polly/test/ScopInfo/parameter-constant-division.ll +++ b/polly/test/ScopInfo/parameter-constant-division.ll @@ -1,4 +1,6 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/parameter_in_dead_statement.ll b/polly/test/ScopInfo/parameter_in_dead_statement.ll index 444f9a9c24b4e..b295f17f628af 100644 --- a/polly/test/ScopInfo/parameter_in_dead_statement.ll +++ b/polly/test/ScopInfo/parameter_in_dead_statement.ll @@ -1,5 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -S -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -S \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s --check-prefix=IR ; ; Verify we do not create assumptions based on the parameter p_1 which is the ; load %0 and due to error-assumptions not "part of the SCoP". diff --git a/polly/test/ScopInfo/parameter_product.ll b/polly/test/ScopInfo/parameter_product.ll index 9e6e3d0e1446e..2fe16f9d95f6d 100644 --- a/polly/test/ScopInfo/parameter_product.ll +++ b/polly/test/ScopInfo/parameter_product.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; int n, m; ; void foo(char* __restrict a) diff --git a/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll b/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll index 20986d17b8f0d..6544aaec76f74 100644 --- a/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll +++ b/polly/test/ScopInfo/parameter_with_constant_factor_in_add.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the access function of the store is simple and concise ; diff --git a/polly/test/ScopInfo/partially_invariant_load_1.ll b/polly/test/ScopInfo/partially_invariant_load_1.ll index 8d62f156a4394..f3923f6127cdd 100644 --- a/polly/test/ScopInfo/partially_invariant_load_1.ll +++ b/polly/test/ScopInfo/partially_invariant_load_1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly' -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=IR +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-invariant-load-hoisting=true -S < %s 2>&1 | FileCheck %s --check-prefix=IR ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/partially_invariant_load_2.ll b/polly/test/ScopInfo/partially_invariant_load_2.ll index 48580907b2f0b..d0d74ad99e09b 100644 --- a/polly/test/ScopInfo/partially_invariant_load_2.ll +++ b/polly/test/ScopInfo/partially_invariant_load_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not try to preload *I and assume p != 42. ; diff --git a/polly/test/ScopInfo/phi-in-non-affine-region.ll b/polly/test/ScopInfo/phi-in-non-affine-region.ll index 6d98a6813862e..fbbc158b566bb 100644 --- a/polly/test/ScopInfo/phi-in-non-affine-region.ll +++ b/polly/test/ScopInfo/phi-in-non-affine-region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Verify that 'tmp' is stored in bb1 and read by bb3, as it is needed as ; incoming value for the tmp11 PHI node. diff --git a/polly/test/ScopInfo/phi_after_error_block.ll b/polly/test/ScopInfo/phi_after_error_block.ll index 251be099c1f49..a1eadff3e9717 100644 --- a/polly/test/ScopInfo/phi_after_error_block.ll +++ b/polly/test/ScopInfo/phi_after_error_block.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s declare void @bar() diff --git a/polly/test/ScopInfo/phi_condition_modeling_1.ll b/polly/test/ScopInfo/phi_condition_modeling_1.ll index bd5c51e968ff5..a889ec96a4b12 100644 --- a/polly/test/ScopInfo/phi_condition_modeling_1.ll +++ b/polly/test/ScopInfo/phi_condition_modeling_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int c, int N) { ; int tmp; diff --git a/polly/test/ScopInfo/phi_condition_modeling_2.ll b/polly/test/ScopInfo/phi_condition_modeling_2.ll index 281b8d33b7756..b56b77e1f4534 100644 --- a/polly/test/ScopInfo/phi_condition_modeling_2.ll +++ b/polly/test/ScopInfo/phi_condition_modeling_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int c, int N) { ; int tmp; diff --git a/polly/test/ScopInfo/phi_conditional_simple_1.ll b/polly/test/ScopInfo/phi_conditional_simple_1.ll index 6d7f0e9484113..14fdc38201bc8 100644 --- a/polly/test/ScopInfo/phi_conditional_simple_1.ll +++ b/polly/test/ScopInfo/phi_conditional_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void jd(int *A, int c) { ; for (int i = 0; i < 1024; i++) { diff --git a/polly/test/ScopInfo/phi_loop_carried_float.ll b/polly/test/ScopInfo/phi_loop_carried_float.ll index 2e62dcd5799a3..76e5507f24b06 100644 --- a/polly/test/ScopInfo/phi_loop_carried_float.ll +++ b/polly/test/ScopInfo/phi_loop_carried_float.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; float f(float *A, int N) { ; float tmp = 0; diff --git a/polly/test/ScopInfo/phi_not_grouped_at_top.ll b/polly/test/ScopInfo/phi_not_grouped_at_top.ll index 57d02f24f781b..c97d9a27b24b7 100644 --- a/polly/test/ScopInfo/phi_not_grouped_at_top.ll +++ b/polly/test/ScopInfo/phi_not_grouped_at_top.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -disable-output < %s +; RUN: opt %loadNPMPolly -passes=polly-prepare -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" declare i32 @funa() align 2 diff --git a/polly/test/ScopInfo/phi_scalar_simple_1.ll b/polly/test/ScopInfo/phi_scalar_simple_1.ll index 600c94e1d9b4c..ffd1a37f8a79f 100644 --- a/polly/test/ScopInfo/phi_scalar_simple_1.ll +++ b/polly/test/ScopInfo/phi_scalar_simple_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The assumed context should be empty since the flags on the IV ; increments already guarantee that there is no wrap in the loop trip diff --git a/polly/test/ScopInfo/phi_scalar_simple_2.ll b/polly/test/ScopInfo/phi_scalar_simple_2.ll index d3353ddc5e4e8..0d6d9029c61c3 100644 --- a/polly/test/ScopInfo/phi_scalar_simple_2.ll +++ b/polly/test/ScopInfo/phi_scalar_simple_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; int jd(int *restrict A, int x, int N, int c) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/phi_with_invoke_edge.ll b/polly/test/ScopInfo/phi_with_invoke_edge.ll index 1b01a98fca06a..9c98ec0c603cf 100644 --- a/polly/test/ScopInfo/phi_with_invoke_edge.ll +++ b/polly/test/ScopInfo/phi_with_invoke_edge.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" declare i32 @generic_personality_v0(i32, i64, ptr, ptr) diff --git a/polly/test/ScopInfo/pointer-comparison-no-nsw.ll b/polly/test/ScopInfo/pointer-comparison-no-nsw.ll index 1b983ace1b6a4..18ba18c69f1f9 100644 --- a/polly/test/ScopInfo/pointer-comparison-no-nsw.ll +++ b/polly/test/ScopInfo/pointer-comparison-no-nsw.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int *B) { ; while (A != B) { diff --git a/polly/test/ScopInfo/pointer-comparison.ll b/polly/test/ScopInfo/pointer-comparison.ll index f80c4978669c4..846640ac630ff 100644 --- a/polly/test/ScopInfo/pointer-comparison.ll +++ b/polly/test/ScopInfo/pointer-comparison.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; TODO: FIXME: Investigate why we need a InvalidContext here. ; diff --git a/polly/test/ScopInfo/pointer-type-expressions.ll b/polly/test/ScopInfo/pointer-type-expressions.ll index 0fdd0bea6f219..89dce6536a107 100644 --- a/polly/test/ScopInfo/pointer-type-expressions.ll +++ b/polly/test/ScopInfo/pointer-type-expressions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], int N, float *P) { ; int i; diff --git a/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll b/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll index 8ad531d93d290..7b6d0d542581b 100644 --- a/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll +++ b/polly/test/ScopInfo/pointer-used-as-base-pointer-and-scalar-read.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; In this test case we pass a pointer %A into a PHI node and also use this ; pointer as base pointer of an array store. As a result, we get both scalar diff --git a/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll b/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll index 7dfa1ec7905ba..13087a517501a 100644 --- a/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll +++ b/polly/test/ScopInfo/polly-timeout-parameter-bounds.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Statements { ; CHECK-NEXT: Stmt_bb9 diff --git a/polly/test/ScopInfo/pr38218.ll b/polly/test/ScopInfo/pr38218.ll index 2c22b1464876d..74103f9a2ac38 100644 --- a/polly/test/ScopInfo/pr38218.ll +++ b/polly/test/ScopInfo/pr38218.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s ; ; This code causes the SCoP to be rejected because of an ERRORBLOCK ; assumption and made Polly crash (llvm.org/PR38219). diff --git a/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll b/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll index 800b0339a1422..33fa0126aa30e 100644 --- a/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll +++ b/polly/test/ScopInfo/preserve-equiv-class-order-in-basic_block.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=scalar-indep -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" diff --git a/polly/test/ScopInfo/process_added_dimensions.ll b/polly/test/ScopInfo/process_added_dimensions.ll index 9cb932eeef18a..2d06f4b995976 100644 --- a/polly/test/ScopInfo/process_added_dimensions.ll +++ b/polly/test/ScopInfo/process_added_dimensions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Context: ; CHECK-NEXT: { : } diff --git a/polly/test/ScopInfo/pwaff-complexity-bailout.ll b/polly/test/ScopInfo/pwaff-complexity-bailout.ll index 62909f8c3e4c5..931e08fb8f2fc 100644 --- a/polly/test/ScopInfo/pwaff-complexity-bailout.ll +++ b/polly/test/ScopInfo/pwaff-complexity-bailout.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops '-pass-remarks-analysis=.*' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-analysis=.* -disable-output < %s 2>&1 | FileCheck %s ; Make sure we hit the complexity bailout, and don't crash. ; CHECK: Low complexity assumption: { : false } diff --git a/polly/test/ScopInfo/ranged_parameter.ll b/polly/test/ScopInfo/ranged_parameter.ll index a6e51c7f2048c..03562b1fd1245 100644 --- a/polly/test/ScopInfo/ranged_parameter.ll +++ b/polly/test/ScopInfo/ranged_parameter.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the constraints on the parameter derived from the ; range metadata (see bottom of the file) are present: diff --git a/polly/test/ScopInfo/ranged_parameter_2.ll b/polly/test/ScopInfo/ranged_parameter_2.ll index 554dd6e38cd00..18cbbf3b87cd6 100644 --- a/polly/test/ScopInfo/ranged_parameter_2.ll +++ b/polly/test/ScopInfo/ranged_parameter_2.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-allow-nonaffine -polly-invariant-load-hoisting=true -debug < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -polly-allow-nonaffine -polly-invariant-load-hoisting=true < %s \ +; RUN: -debug 2>&1 | FileCheck %s ; REQUIRES: asserts diff --git a/polly/test/ScopInfo/ranged_parameter_wrap.ll b/polly/test/ScopInfo/ranged_parameter_wrap.ll index 7ae15c34c94c6..d236eeeefc11c 100644 --- a/polly/test/ScopInfo/ranged_parameter_wrap.ll +++ b/polly/test/ScopInfo/ranged_parameter_wrap.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the constraints on the parameter derived from the ; __wrapping__ range metadata (see bottom of the file) are present: diff --git a/polly/test/ScopInfo/ranged_parameter_wrap_2.ll b/polly/test/ScopInfo/ranged_parameter_wrap_2.ll index 00c3caa9c50ce..fc0a737a5edbe 100644 --- a/polly/test/ScopInfo/ranged_parameter_wrap_2.ll +++ b/polly/test/ScopInfo/ranged_parameter_wrap_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that the context is built fast and does not explode due to us ; combining a large number of non-convex ranges. Instead, after a certain diff --git a/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll b/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll index 528dbb102ecb0..7e6f2406a0ac8 100644 --- a/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll +++ b/polly/test/ScopInfo/read-only-scalar-used-in-phi-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; float foo(float sum, float A[]) { ; diff --git a/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll b/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll index 6bc1fe71f35f2..18e6c1fac9e15 100644 --- a/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll +++ b/polly/test/ScopInfo/read-only-scalar-used-in-phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; float foo(float sum, float A[]) { ; diff --git a/polly/test/ScopInfo/read-only-scalars.ll b/polly/test/ScopInfo/read-only-scalars.ll index 7c78d621930c5..f04163e480284 100644 --- a/polly/test/ScopInfo/read-only-scalars.ll +++ b/polly/test/ScopInfo/read-only-scalars.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-analyze-read-only-scalars=false '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-analyze-read-only-scalars=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCALARS +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-analyze-read-only-scalars=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-analyze-read-only-scalars=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=SCALARS ; CHECK-NOT: Memref_scalar diff --git a/polly/test/ScopInfo/read-only-statements.ll b/polly/test/ScopInfo/read-only-statements.ll index c1cb618a45f64..7bac53a2b6b51 100644 --- a/polly/test/ScopInfo/read-only-statements.ll +++ b/polly/test/ScopInfo/read-only-statements.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check we remove read only statements. ; diff --git a/polly/test/ScopInfo/reduction_alternating_base.ll b/polly/test/ScopInfo/reduction_alternating_base.ll index 474c6ac64ffc1..e38ff6046ac01 100644 --- a/polly/test/ScopInfo/reduction_alternating_base.ll +++ b/polly/test/ScopInfo/reduction_alternating_base.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; ; void f(int *A) { diff --git a/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll b/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll index e91eeaf544a05..17f9dc57f2823 100644 --- a/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll +++ b/polly/test/ScopInfo/reduction_chain_partially_outside_the_scop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: NONE ; diff --git a/polly/test/ScopInfo/reduction_different_index.ll b/polly/test/ScopInfo/reduction_different_index.ll index 5c169f71f4fe8..d2786d5fd6779 100644 --- a/polly/test/ScopInfo/reduction_different_index.ll +++ b/polly/test/ScopInfo/reduction_different_index.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Verify if the following case is not detected as reduction. ; ; void f(int *A,int *sum) { diff --git a/polly/test/ScopInfo/reduction_different_index1.ll b/polly/test/ScopInfo/reduction_different_index1.ll index 93ab77be84de9..710ae3e74f21a 100644 --- a/polly/test/ScopInfo/reduction_different_index1.ll +++ b/polly/test/ScopInfo/reduction_different_index1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Verify if the following case is not detected as reduction. ; ; void f(int *A, int *sum, int i1, int i2) { diff --git a/polly/test/ScopInfo/reduction_disabled_multiplicative.ll b/polly/test/ScopInfo/reduction_disabled_multiplicative.ll index 618e4d3ab3f98..61228e075dabe 100644 --- a/polly/test/ScopInfo/reduction_disabled_multiplicative.ll +++ b/polly/test/ScopInfo/reduction_disabled_multiplicative.ll @@ -1,4 +1,4 @@ -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-disable-multiplicative-reductions -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -polly-disable-multiplicative-reductions -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: ReadAccess := [Reduction Type: + ; CHECK: { Stmt_for_body[i0] -> MemRef_sum[0] }; diff --git a/polly/test/ScopInfo/reduction_double.ll b/polly/test/ScopInfo/reduction_double.ll index a7721d1b42e46..d126d3d833ee1 100644 --- a/polly/test/ScopInfo/reduction_double.ll +++ b/polly/test/ScopInfo/reduction_double.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s ; ; Verify if two independent reductions in same loop is detected ; diff --git a/polly/test/ScopInfo/reduction_escaping_intermediate.ll b/polly/test/ScopInfo/reduction_escaping_intermediate.ll index 86923458ee773..c66a8be0852fa 100644 --- a/polly/test/ScopInfo/reduction_escaping_intermediate.ll +++ b/polly/test/ScopInfo/reduction_escaping_intermediate.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int N, int * restrict sums, int * restrict escape) { ; int i, j; diff --git a/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll b/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll index 641d2e7337e77..c574d315b2fe1 100644 --- a/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll +++ b/polly/test/ScopInfo/reduction_escaping_intermediate_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int N, int * restrict sums, int * restrict escape) { ; int i, j; diff --git a/polly/test/ScopInfo/reduction_escaping_intermediate_3.ll b/polly/test/ScopInfo/reduction_escaping_intermediate_3.ll index dd2a76ebbd368..92a071ea1c372 100644 --- a/polly/test/ScopInfo/reduction_escaping_intermediate_3.ll +++ b/polly/test/ScopInfo/reduction_escaping_intermediate_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output < %s | FileCheck %s ; ; void f(int N, int * restrict sums, int * restrict escape) { ; int i, j; diff --git a/polly/test/ScopInfo/reduction_if.ll b/polly/test/ScopInfo/reduction_if.ll index 53a62a3b857e9..4f7d3681e0a0b 100644 --- a/polly/test/ScopInfo/reduction_if.ll +++ b/polly/test/ScopInfo/reduction_if.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s ; ; Verify if reduction spread across multiple blocks in a single scop statement are detected ; diff --git a/polly/test/ScopInfo/reduction_indirect_access.ll b/polly/test/ScopInfo/reduction_indirect_access.ll index cb54cd9581368..7acac4b150f40 100644 --- a/polly/test/ScopInfo/reduction_indirect_access.ll +++ b/polly/test/ScopInfo/reduction_indirect_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-allow-nonaffine -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -polly-allow-nonaffine -disable-output < %s | FileCheck %s ; ; CHECK: Reduction Type: NONE ; CHECK: MemRef_INDICES[i0] diff --git a/polly/test/ScopInfo/reduction_indirect_access_2.ll b/polly/test/ScopInfo/reduction_indirect_access_2.ll index 5642a8470f124..331953991d86c 100644 --- a/polly/test/ScopInfo/reduction_indirect_access_2.ll +++ b/polly/test/ScopInfo/reduction_indirect_access_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output -polly-allow-nonaffine < %s | FileCheck %s ; ; Validate that the accesses to INDICES[i] is not part of a reduction. ; diff --git a/polly/test/ScopInfo/reduction_invalid_different_operators.ll b/polly/test/ScopInfo/reduction_invalid_different_operators.ll index 9e6b3cd431083..9846f1029c087 100644 --- a/polly/test/ScopInfo/reduction_invalid_different_operators.ll +++ b/polly/test/ScopInfo/reduction_invalid_different_operators.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; int f() { ; int i, sum = 0, sth = 0; diff --git a/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll b/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll index 7ae7d8ed3ffa2..4d70e53304556 100644 --- a/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll +++ b/polly/test/ScopInfo/reduction_invalid_overlapping_accesses.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *sums) { ; int i, j; diff --git a/polly/test/ScopInfo/reduction_long_reduction_chain.ll b/polly/test/ScopInfo/reduction_long_reduction_chain.ll index 6f2f48005bdac..62ae1fef187b6 100644 --- a/polly/test/ScopInfo/reduction_long_reduction_chain.ll +++ b/polly/test/ScopInfo/reduction_long_reduction_chain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output < %s | FileCheck %s ; ; CHECK: Reduction Type: + ; CHECK: MemRef_sum diff --git a/polly/test/ScopInfo/reduction_long_reduction_chain_double_use.ll b/polly/test/ScopInfo/reduction_long_reduction_chain_double_use.ll index 2fd71c28d5211..7ca46fa9535ac 100644 --- a/polly/test/ScopInfo/reduction_long_reduction_chain_double_use.ll +++ b/polly/test/ScopInfo/reduction_long_reduction_chain_double_use.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -basic-aa -polly-print-scops -disable-output < %s | FileCheck %s ; ; Sum is added twice in the statement. Hence no reduction. ; CHECK: Reduction Type: NONE diff --git a/polly/test/ScopInfo/reduction_multiple_different_operators.ll b/polly/test/ScopInfo/reduction_multiple_different_operators.ll index 4f049a3505b09..b77c72a291744 100644 --- a/polly/test/ScopInfo/reduction_multiple_different_operators.ll +++ b/polly/test/ScopInfo/reduction_multiple_different_operators.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s ; ; Should not be identified as reduction as there are different operations ; involved on sum (multiplication followed by addition) diff --git a/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll b/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll index 0d016674ffc08..800eb2043dc62 100644 --- a/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll +++ b/polly/test/ScopInfo/reduction_multiple_loops_array_sum.ll @@ -1,4 +1,4 @@ -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Stmt_for_body ; CHECK: Reduction Type: * diff --git a/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll b/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll index 568513aedfa10..49ebdcb044988 100644 --- a/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll +++ b/polly/test/ScopInfo/reduction_multiple_loops_array_sum_1.ll @@ -1,4 +1,4 @@ -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Stmt_for_body ; CHECK: Reduction Type: NONE diff --git a/polly/test/ScopInfo/reduction_multiple_simple_binary.ll b/polly/test/ScopInfo/reduction_multiple_simple_binary.ll index 0ac50b3b92c47..77b71f4df301b 100644 --- a/polly/test/ScopInfo/reduction_multiple_simple_binary.ll +++ b/polly/test/ScopInfo/reduction_multiple_simple_binary.ll @@ -1,4 +1,4 @@ -; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt -aa-pipeline=basic-aa %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: ReadAccess := [Reduction Type: NONE ; CHECK: { Stmt_for_body[i0] -> MemRef_A[1 + i0] }; diff --git a/polly/test/ScopInfo/reduction_non_overlapping_chains.ll b/polly/test/ScopInfo/reduction_non_overlapping_chains.ll index f01b641b17f64..61aaa051e49d1 100644 --- a/polly/test/ScopInfo/reduction_non_overlapping_chains.ll +++ b/polly/test/ScopInfo/reduction_non_overlapping_chains.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: + ; CHECK: Reduction Type: + diff --git a/polly/test/ScopInfo/reduction_only_reduction_like_access.ll b/polly/test/ScopInfo/reduction_only_reduction_like_access.ll index 51685dca8b7da..fb6d236764b74 100644 --- a/polly/test/ScopInfo/reduction_only_reduction_like_access.ll +++ b/polly/test/ScopInfo/reduction_only_reduction_like_access.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: + ; diff --git a/polly/test/ScopInfo/reduction_simple_fp.ll b/polly/test/ScopInfo/reduction_simple_fp.ll index 67139bba2fded..aa4cd00f39f59 100644 --- a/polly/test/ScopInfo/reduction_simple_fp.ll +++ b/polly/test/ScopInfo/reduction_simple_fp.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Function: f_no_fast_math ; CHECK: Reduction Type: NONE diff --git a/polly/test/ScopInfo/reduction_simple_w_constant.ll b/polly/test/ScopInfo/reduction_simple_w_constant.ll index c17184624c066..e385b66f9db21 100644 --- a/polly/test/ScopInfo/reduction_simple_w_constant.ll +++ b/polly/test/ScopInfo/reduction_simple_w_constant.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: + ; diff --git a/polly/test/ScopInfo/reduction_simple_w_iv.ll b/polly/test/ScopInfo/reduction_simple_w_iv.ll index 7cc50bfe78906..e22eccbb2831d 100644 --- a/polly/test/ScopInfo/reduction_simple_w_iv.ll +++ b/polly/test/ScopInfo/reduction_simple_w_iv.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: + ; diff --git a/polly/test/ScopInfo/reduction_two_identical_reads.ll b/polly/test/ScopInfo/reduction_two_identical_reads.ll index 35cb9dfcdb122..8f00954f7efc3 100644 --- a/polly/test/ScopInfo/reduction_two_identical_reads.ll +++ b/polly/test/ScopInfo/reduction_two_identical_reads.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Reduction Type: NONE ; diff --git a/polly/test/ScopInfo/redundant_parameter_constraint.ll b/polly/test/ScopInfo/redundant_parameter_constraint.ll index 7512da420af0e..ad71f1f59e18b 100644 --- a/polly/test/ScopInfo/redundant_parameter_constraint.ll +++ b/polly/test/ScopInfo/redundant_parameter_constraint.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The constraint that r2 has to be bigger than r1 is implicitly contained in ; the domain, hence we do not want to see it explicitly. diff --git a/polly/test/ScopInfo/region-with-instructions.ll b/polly/test/ScopInfo/region-with-instructions.ll index 38d58c97e1b05..d4720511b7aad 100644 --- a/polly/test/ScopInfo/region-with-instructions.ll +++ b/polly/test/ScopInfo/region-with-instructions.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-print-instructions -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -polly-print-instructions -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Statements { ; CHECK: Stmt_bb46 diff --git a/polly/test/ScopInfo/remarks.ll b/polly/test/ScopInfo/remarks.ll index 2d6ace988659d..10cc57aa27a14 100644 --- a/polly/test/ScopInfo/remarks.ll +++ b/polly/test/ScopInfo/remarks.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: remark: test/ScopInfo/remarks.c:4:7: SCoP begins here. ; CHECK: remark: test/ScopInfo/remarks.c:9:15: Inbounds assumption: [N, M, Debug] -> { : M <= 100 } diff --git a/polly/test/ScopInfo/required-invariant-loop-bounds.ll b/polly/test/ScopInfo/required-invariant-loop-bounds.ll index 3bb5bfb0765e3..abf0b0e23855c 100644 --- a/polly/test/ScopInfo/required-invariant-loop-bounds.ll +++ b/polly/test/ScopInfo/required-invariant-loop-bounds.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output \ +; RUN: -polly-invariant-load-hoisting=true < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] diff --git a/polly/test/ScopInfo/restriction_in_dead_block.ll b/polly/test/ScopInfo/restriction_in_dead_block.ll index dd6115c421d0c..487c585cb9d9c 100644 --- a/polly/test/ScopInfo/restriction_in_dead_block.ll +++ b/polly/test/ScopInfo/restriction_in_dead_block.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we do not generate an empty invalid context only because the wrap ; in the second conditional will always happen if the block is executed. diff --git a/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll b/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll index e8df1eccd5945..702b7dc5e0049 100644 --- a/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll +++ b/polly/test/ScopInfo/run-time-check-many-array-disjuncts.ll @@ -1,5 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DETECT -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=DETECT +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; DETECT: Valid Region for Scop: bb124 => bb176 ; diff --git a/polly/test/ScopInfo/run-time-check-many-parameters.ll b/polly/test/ScopInfo/run-time-check-many-parameters.ll index 2a8853322f1d5..559c38d2682ef 100644 --- a/polly/test/ScopInfo/run-time-check-many-parameters.ll +++ b/polly/test/ScopInfo/run-time-check-many-parameters.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; A valid Scop would print the list of it's statements, we check that we do not ; see that list. diff --git a/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll b/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll index 5e71e7a9d2a46..3cf4c40bdb60f 100644 --- a/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll +++ b/polly/test/ScopInfo/run-time-check-many-piecewise-aliasing.ll @@ -1,5 +1,6 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -disable-output < %s 2>&1 | FileCheck %s -check-prefix=DETECT -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 \ +; RUN: | FileCheck %s -check-prefix=DETECT +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; DETECT: Valid Region for Scop: for => return ; diff --git a/polly/test/ScopInfo/run-time-check-read-only-arrays.ll b/polly/test/ScopInfo/run-time-check-read-only-arrays.ll index 286f878f935f4..51ab81476d542 100644 --- a/polly/test/ScopInfo/run-time-check-read-only-arrays.ll +++ b/polly/test/ScopInfo/run-time-check-read-only-arrays.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void foo(float *A, float *B, float *C, long N) { ; for (long i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/same-base-address-scalar-and-array.ll b/polly/test/ScopInfo/same-base-address-scalar-and-array.ll index 9f4d6f5895aeb..dd809ba156c79 100644 --- a/polly/test/ScopInfo/same-base-address-scalar-and-array.ll +++ b/polly/test/ScopInfo/same-base-address-scalar-and-array.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we introduce two ScopArrayInfo objects (or virtual arrays) for the %out variable ; as it is used as a memory base pointer (%0) but also as a scalar (%out.addr.0.lcssa). diff --git a/polly/test/ScopInfo/scalar.ll b/polly/test/ScopInfo/scalar.ll index db8371d96b118..812d2fddc3c8e 100644 --- a/polly/test/ScopInfo/scalar.ll +++ b/polly/test/ScopInfo/scalar.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" diff --git a/polly/test/ScopInfo/scalar_dependence_cond_br.ll b/polly/test/ScopInfo/scalar_dependence_cond_br.ll index a09bdaf06844e..59549f3dbbad5 100644 --- a/polly/test/ScopInfo/scalar_dependence_cond_br.ll +++ b/polly/test/ScopInfo/scalar_dependence_cond_br.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output< %s 2>&1 | FileCheck %s ; ; void f(int *A, int c, int d) { ; for (int i = 0; i < 1024; i++) diff --git a/polly/test/ScopInfo/scalar_to_array.ll b/polly/test/ScopInfo/scalar_to_array.ll index e71c515fa2d35..3f61d0d723046 100644 --- a/polly/test/ScopInfo/scalar_to_array.ll +++ b/polly/test/ScopInfo/scalar_to_array.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ModuleID = 'scalar_to_array.ll' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll b/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll index 66c50dcbe13f3..fa0c81fe9a48e 100644 --- a/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll +++ b/polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; Derived from test-suite/SingleSource/UnitTests/Vector/SSE/sse.stepfft.c diff --git a/polly/test/ScopInfo/scev-invalidated.ll b/polly/test/ScopInfo/scev-invalidated.ll index e0956df0b1e84..6b9efd4b37c7d 100644 --- a/polly/test/ScopInfo/scev-invalidated.ll +++ b/polly/test/ScopInfo/scev-invalidated.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Region: %if.then6---%return ; diff --git a/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll b/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll index 4a280cc929e3a..6e2ed1240b071 100644 --- a/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll +++ b/polly/test/ScopInfo/schedule-const-post-dominator-walk-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/schedule-const-post-dominator-walk.ll b/polly/test/ScopInfo/schedule-const-post-dominator-walk.ll index 777c0088c4ddd..d0e8a2accaa2c 100644 --- a/polly/test/ScopInfo/schedule-const-post-dominator-walk.ll +++ b/polly/test/ScopInfo/schedule-const-post-dominator-walk.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll b/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll index 15dea5a7f4dd8..9ffc30f7360e9 100644 --- a/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll +++ b/polly/test/ScopInfo/schedule-constuction-endless-loop1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not build a SCoP and do not crash. ; diff --git a/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll b/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll index 9ac6643564f7b..65f2f99b48c1b 100644 --- a/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll +++ b/polly/test/ScopInfo/schedule-constuction-endless-loop2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; Check that we do not build a SCoP and do not crash. ; diff --git a/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll b/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll index 1657d2f37d8ba..7c36f8d7f72e8 100644 --- a/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll +++ b/polly/test/ScopInfo/schedule-incorrectly-contructed-in-case-of-infinite-loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -disable-output < %s +; RUN: opt %loadNPMPolly -polly-process-unprofitable '-passes=print' -disable-output < %s ; ; This test contains a infinite loop (bb13) and crashed the domain generation ; at some point. Just verify it does not anymore. diff --git a/polly/test/ScopInfo/scop-affine-parameter-ordering.ll b/polly/test/ScopInfo/scop-affine-parameter-ordering.ll index 76bb438d43ff7..c8a234e9cbce7 100644 --- a/polly/test/ScopInfo/scop-affine-parameter-ordering.ll +++ b/polly/test/ScopInfo/scop-affine-parameter-ordering.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128" target triple = "aarch64--linux-android" diff --git a/polly/test/ScopInfo/sign_wrapped_set.ll b/polly/test/ScopInfo/sign_wrapped_set.ll index 135976e7d51c6..93b63df1c5841 100644 --- a/polly/test/ScopInfo/sign_wrapped_set.ll +++ b/polly/test/ScopInfo/sign_wrapped_set.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-process-unprofitable '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-process-unprofitable '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Domain := ; CHECK-NEXT: [srcHeight] -> { Stmt_for_cond6_preheader_us[i0] : 0 <= i0 <= -3 + srcHeight }; diff --git a/polly/test/ScopInfo/simple_loop_1.ll b/polly/test/ScopInfo/simple_loop_1.ll index 1d9f5c2edebcb..e736f3382d905 100644 --- a/polly/test/ScopInfo/simple_loop_1.ll +++ b/polly/test/ScopInfo/simple_loop_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], int N) { ; int i; diff --git a/polly/test/ScopInfo/simple_loop_2.ll b/polly/test/ScopInfo/simple_loop_2.ll index 877f860ba5a90..ae83dd633b96e 100644 --- a/polly/test/ScopInfo/simple_loop_2.ll +++ b/polly/test/ScopInfo/simple_loop_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], int N) { ; int i; diff --git a/polly/test/ScopInfo/simple_loop_unsigned.ll b/polly/test/ScopInfo/simple_loop_unsigned.ll index d3834297e2668..c4a96e4381c94 100644 --- a/polly/test/ScopInfo/simple_loop_unsigned.ll +++ b/polly/test/ScopInfo/simple_loop_unsigned.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], unsigned N) { ; unsigned i; diff --git a/polly/test/ScopInfo/simple_loop_unsigned_2.ll b/polly/test/ScopInfo/simple_loop_unsigned_2.ll index 1da6053a8316b..37e907dc006f3 100644 --- a/polly/test/ScopInfo/simple_loop_unsigned_2.ll +++ b/polly/test/ScopInfo/simple_loop_unsigned_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/simple_loop_unsigned_3.ll b/polly/test/ScopInfo/simple_loop_unsigned_3.ll index 0d44bf64ffc18..7f2cf5caa1ce7 100644 --- a/polly/test/ScopInfo/simple_loop_unsigned_3.ll +++ b/polly/test/ScopInfo/simple_loop_unsigned_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Assumed Context: ; CHECK-NEXT: [N] -> { : } diff --git a/polly/test/ScopInfo/simple_nonaffine_loop_not.ll b/polly/test/ScopInfo/simple_nonaffine_loop_not.ll index f70b3fa3ea21a..4df0d343b0fc9 100644 --- a/polly/test/ScopInfo/simple_nonaffine_loop_not.ll +++ b/polly/test/ScopInfo/simple_nonaffine_loop_not.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | not FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | not FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" @.str = private unnamed_addr constant [17 x i8] c"Random Value: %d\00", align 1 diff --git a/polly/test/ScopInfo/smax.ll b/polly/test/ScopInfo/smax.ll index 3ba2b35e7e503..8968e13192477 100644 --- a/polly/test/ScopInfo/smax.ll +++ b/polly/test/ScopInfo/smax.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64" define void @foo(ptr noalias %data, ptr noalias %ptr, i32 %x_pos, i32 %w) { diff --git a/polly/test/ScopInfo/statistics.ll b/polly/test/ScopInfo/statistics.ll index aa72db3065259..0a294f2016eba 100644 --- a/polly/test/ScopInfo/statistics.ll +++ b/polly/test/ScopInfo/statistics.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -stats -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -stats -disable-output < %s 2>&1 | FileCheck %s ; REQUIRES: asserts ; CHECK-DAG: 4 polly-scops - Maximal number of loops in scops diff --git a/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll b/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll index 54832607f11d5..a46acb090b7fd 100644 --- a/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll +++ b/polly/test/ScopInfo/stmt_split_exit_of_region_stmt.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Region__TO__Stmt diff --git a/polly/test/ScopInfo/stmt_split_no_after_split.ll b/polly/test/ScopInfo/stmt_split_no_after_split.ll index 0a4284bdd34f5..3a5ebf0725b10 100644 --- a/polly/test/ScopInfo/stmt_split_no_after_split.ll +++ b/polly/test/ScopInfo/stmt_split_no_after_split.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_split_no_dependence.ll b/polly/test/ScopInfo/stmt_split_no_dependence.ll index ed2180407c68d..9edd0f0a13e59 100644 --- a/polly/test/ScopInfo/stmt_split_no_dependence.ll +++ b/polly/test/ScopInfo/stmt_split_no_dependence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void func(int *A, int *B){ ; for (int i = 0; i < 1024; i+=1) { diff --git a/polly/test/ScopInfo/stmt_split_on_store.ll b/polly/test/ScopInfo/stmt_split_on_store.ll index f35a07c8d7176..d645becb19583 100644 --- a/polly/test/ScopInfo/stmt_split_on_store.ll +++ b/polly/test/ScopInfo/stmt_split_on_store.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=store -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=store -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void func(int *A, int *B){ ; for (int i = 0; i < 1024; i+=1) { diff --git a/polly/test/ScopInfo/stmt_split_on_synthesizable.ll b/polly/test/ScopInfo/stmt_split_on_synthesizable.ll index 41721867f1764..1a1ccff4f02d6 100644 --- a/polly/test/ScopInfo/stmt_split_on_synthesizable.ll +++ b/polly/test/ScopInfo/stmt_split_on_synthesizable.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll b/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll index 0521525e272b3..594b36279d6bc 100644 --- a/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll +++ b/polly/test/ScopInfo/stmt_split_phi_in_beginning_bb.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll b/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll index 82a85aa5f0099..6c9f1c2cb5fd0 100644 --- a/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll +++ b/polly/test/ScopInfo/stmt_split_phi_in_stmt.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_split_scalar_dependence.ll b/polly/test/ScopInfo/stmt_split_scalar_dependence.ll index 1f21c0ce7225f..07abe46ac0399 100644 --- a/polly/test/ScopInfo/stmt_split_scalar_dependence.ll +++ b/polly/test/ScopInfo/stmt_split_scalar_dependence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_split_within_loop.ll b/polly/test/ScopInfo/stmt_split_within_loop.ll index 580ffab567846..9a42ae3a37270 100644 --- a/polly/test/ScopInfo/stmt_split_within_loop.ll +++ b/polly/test/ScopInfo/stmt_split_within_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-print-instructions '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Statements { ; CHECK-NEXT: Stmt_Stmt diff --git a/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll b/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll index 67e8f631312ea..ba4801d9a0006 100644 --- a/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll +++ b/polly/test/ScopInfo/stmt_with_read_but_without_sideffect.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-delicm -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; The statement Stmt_for_if_else_1 should be removed because it has no ; sideeffects. But it has a use of MemRef_tmp21 that must also be diff --git a/polly/test/ScopInfo/switch-1.ll b/polly/test/ScopInfo/switch-1.ll index 0f9e83210661b..0c3610185e6e0 100644 --- a/polly/test/ScopInfo/switch-1.ll +++ b/polly/test/ScopInfo/switch-1.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/switch-2.ll b/polly/test/ScopInfo/switch-2.ll index 9defd41f25231..f0056da37955d 100644 --- a/polly/test/ScopInfo/switch-2.ll +++ b/polly/test/ScopInfo/switch-2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/switch-3.ll b/polly/test/ScopInfo/switch-3.ll index faaa4d0254db9..a1810bf6ef538 100644 --- a/polly/test/ScopInfo/switch-3.ll +++ b/polly/test/ScopInfo/switch-3.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/switch-4.ll b/polly/test/ScopInfo/switch-4.ll index c82e703a82965..00665fd75cbcd 100644 --- a/polly/test/ScopInfo/switch-4.ll +++ b/polly/test/ScopInfo/switch-4.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/switch-5.ll b/polly/test/ScopInfo/switch-5.ll index 5a49be8d80975..2de3695649404 100644 --- a/polly/test/ScopInfo/switch-5.ll +++ b/polly/test/ScopInfo/switch-5.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives diff --git a/polly/test/ScopInfo/switch-6.ll b/polly/test/ScopInfo/switch-6.ll index 379981b167039..b859840ee111f 100644 --- a/polly/test/ScopInfo/switch-6.ll +++ b/polly/test/ScopInfo/switch-6.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int N) { ; for (int i = 0; i < N; i++) { diff --git a/polly/test/ScopInfo/switch-7.ll b/polly/test/ScopInfo/switch-7.ll index 0c8efc590b9c9..f73d97f70b28d 100644 --- a/polly/test/ScopInfo/switch-7.ll +++ b/polly/test/ScopInfo/switch-7.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AST ; ; void f(int *A, int c, int N) { ; switch (c) { diff --git a/polly/test/ScopInfo/tempscop-printing.ll b/polly/test/ScopInfo/tempscop-printing.ll index 09cc95e42a584..4f02176569b73 100644 --- a/polly/test/ScopInfo/tempscop-printing.ll +++ b/polly/test/ScopInfo/tempscop-printing.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -aa-pipeline=basic-aa -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(long A[], int N, int *init_ptr) { ; long i, j; diff --git a/polly/test/ScopInfo/test-wrapping-in-condition.ll b/polly/test/ScopInfo/test-wrapping-in-condition.ll index d64bdf985c1d2..746350422d6b9 100644 --- a/polly/test/ScopInfo/test-wrapping-in-condition.ll +++ b/polly/test/ScopInfo/test-wrapping-in-condition.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invalid Context: ; CHECK: [N] -> { : N >= 129 } diff --git a/polly/test/ScopInfo/truncate-1.ll b/polly/test/ScopInfo/truncate-1.ll index d531dd8e5ab08..44222c88dfa77 100644 --- a/polly/test/ScopInfo/truncate-1.ll +++ b/polly/test/ScopInfo/truncate-1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(char *A, short N) { ; for (char i = 0; i < (char)N; i++) diff --git a/polly/test/ScopInfo/truncate-2.ll b/polly/test/ScopInfo/truncate-2.ll index 3f5d1faf4c377..c78a5337fdeba 100644 --- a/polly/test/ScopInfo/truncate-2.ll +++ b/polly/test/ScopInfo/truncate-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(char *A, short N) { ; for (short i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/truncate-3.ll b/polly/test/ScopInfo/truncate-3.ll index d20f375b9a2bd..5a80a873cd476 100644 --- a/polly/test/ScopInfo/truncate-3.ll +++ b/polly/test/ScopInfo/truncate-3.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -pass-remarks-analysis=polly-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -pass-remarks-analysis="polly-scops" \ +; RUN: -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Signed-unsigned restriction: [p] -> { : p <= -129 or p >= 128 } diff --git a/polly/test/ScopInfo/two-loops-one-infinite.ll b/polly/test/ScopInfo/two-loops-one-infinite.ll index aa2be1003adcc..e2723a8a9a2e9 100644 --- a/polly/test/ScopInfo/two-loops-one-infinite.ll +++ b/polly/test/ScopInfo/two-loops-one-infinite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s ; ; Verify we do not create a SCoP in the presence of infinite loops. ; diff --git a/polly/test/ScopInfo/two-loops-right-after-each-other.ll b/polly/test/ScopInfo/two-loops-right-after-each-other.ll index 163642d9072e2..51f3c2d6eb875 100644 --- a/polly/test/ScopInfo/two-loops-right-after-each-other.ll +++ b/polly/test/ScopInfo/two-loops-right-after-each-other.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: Statements { ; CHECK-NEXT: Stmt_loop_1 diff --git a/polly/test/ScopInfo/undef_in_cond.ll b/polly/test/ScopInfo/undef_in_cond.ll index 5fb08f82b3267..ef117612f6cb3 100644 --- a/polly/test/ScopInfo/undef_in_cond.ll +++ b/polly/test/ScopInfo/undef_in_cond.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define fastcc void @fix_operands() nounwind { diff --git a/polly/test/ScopInfo/unnamed_nonaffine.ll b/polly/test/ScopInfo/unnamed_nonaffine.ll index 11418499702df..5b9f980591777 100644 --- a/polly/test/ScopInfo/unnamed_nonaffine.ll +++ b/polly/test/ScopInfo/unnamed_nonaffine.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-use-llvm-names=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-use-llvm-names=false '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -check-prefix=UNNAMED +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-use-llvm-names=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-use-llvm-names=false '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -check-prefix=UNNAMED ; ; void f(int *A, int b) { ; int x; diff --git a/polly/test/ScopInfo/unnamed_stmts.ll b/polly/test/ScopInfo/unnamed_stmts.ll index e23b3ae5404b5..163170ce74895 100644 --- a/polly/test/ScopInfo/unnamed_stmts.ll +++ b/polly/test/ScopInfo/unnamed_stmts.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; This test case verifies that we generate numbered statement names in case ; no LLVM-IR names are used in the test case. We also verify, that we diff --git a/polly/test/ScopInfo/unpredictable_nonscop_loop.ll b/polly/test/ScopInfo/unpredictable_nonscop_loop.ll index 5bc136658ccab..daa1f8c783870 100644 --- a/polly/test/ScopInfo/unpredictable_nonscop_loop.ll +++ b/polly/test/ScopInfo/unpredictable_nonscop_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print' -disable-output < %s 2>&1 | FileCheck %s -match-full-lines ; Derived from test-suite/MultiSource/Applications/sgefa/blas.c ; ; The exit value of %i.0320 in land.rhs is not computable. diff --git a/polly/test/ScopInfo/unprofitable_scalar-accs.ll b/polly/test/ScopInfo/unprofitable_scalar-accs.ll index 3f6bb937ded1a..ca8daa4de01a6 100644 --- a/polly/test/ScopInfo/unprofitable_scalar-accs.ll +++ b/polly/test/ScopInfo/unprofitable_scalar-accs.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=false '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=HEURISTIC +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=false '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-process-unprofitable=false -polly-unprofitable-scalar-accs=true '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=HEURISTIC ; Check the effect of -polly-unprofitable-scalar-accs diff --git a/polly/test/ScopInfo/unsigned-condition.ll b/polly/test/ScopInfo/unsigned-condition.ll index 608b6d6e50a36..0529ded1f6cfb 100644 --- a/polly/test/ScopInfo/unsigned-condition.ll +++ b/polly/test/ScopInfo/unsigned-condition.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], int N, unsigned P) { ; int i; diff --git a/polly/test/ScopInfo/unsigned-division-1.ll b/polly/test/ScopInfo/unsigned-division-1.ll index 58d39dc239ac9..1c06b55300b67 100644 --- a/polly/test/ScopInfo/unsigned-division-1.ll +++ b/polly/test/ScopInfo/unsigned-division-1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, unsigned N) { ; for (unsigned i = 0; i < N / 2; i++) diff --git a/polly/test/ScopInfo/unsigned-division-2.ll b/polly/test/ScopInfo/unsigned-division-2.ll index cda666d6f5ebf..153639c42b384 100644 --- a/polly/test/ScopInfo/unsigned-division-2.ll +++ b/polly/test/ScopInfo/unsigned-division-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, unsigned N) { ; for (unsigned i = 0; i < N / 2 + 3; i++) diff --git a/polly/test/ScopInfo/unsigned-division-3.ll b/polly/test/ScopInfo/unsigned-division-3.ll index 50de3c59892e7..34561fc4645cc 100644 --- a/polly/test/ScopInfo/unsigned-division-3.ll +++ b/polly/test/ScopInfo/unsigned-division-3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, unsigned char N) { ; for (unsigned i = 0; i <= N / -128; i++) diff --git a/polly/test/ScopInfo/unsigned-division-4.ll b/polly/test/ScopInfo/unsigned-division-4.ll index 4dd75e526407d..be539b47123bc 100644 --- a/polly/test/ScopInfo/unsigned-division-4.ll +++ b/polly/test/ScopInfo/unsigned-division-4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, unsigned char N) { ; for (unsigned i = 0; i < (N / -128) + 3; i++) diff --git a/polly/test/ScopInfo/unsigned-division-5.ll b/polly/test/ScopInfo/unsigned-division-5.ll index fff131292271a..61716ecec0d90 100644 --- a/polly/test/ScopInfo/unsigned-division-5.ll +++ b/polly/test/ScopInfo/unsigned-division-5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, unsigned N) { ; for (unsigned i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/unsigned_wrap_uge.ll b/polly/test/ScopInfo/unsigned_wrap_uge.ll index f54b9bec6e7df..d25a9576e863a 100644 --- a/polly/test/ScopInfo/unsigned_wrap_uge.ll +++ b/polly/test/ScopInfo/unsigned_wrap_uge.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Unsigned wrap-around check. ; diff --git a/polly/test/ScopInfo/unsigned_wrap_ugt.ll b/polly/test/ScopInfo/unsigned_wrap_ugt.ll index 20afd17f86793..0310fdde6d26e 100644 --- a/polly/test/ScopInfo/unsigned_wrap_ugt.ll +++ b/polly/test/ScopInfo/unsigned_wrap_ugt.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Unsigned wrap-around check. ; diff --git a/polly/test/ScopInfo/unsigned_wrap_ule.ll b/polly/test/ScopInfo/unsigned_wrap_ule.ll index 6fa6cc12990a3..47bfc6065b1a8 100644 --- a/polly/test/ScopInfo/unsigned_wrap_ule.ll +++ b/polly/test/ScopInfo/unsigned_wrap_ule.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Unsigned wrap-around check. ; diff --git a/polly/test/ScopInfo/unsigned_wrap_ult.ll b/polly/test/ScopInfo/unsigned_wrap_ult.ll index 4a3b604d81f0f..1b73c0d6dd7ee 100644 --- a/polly/test/ScopInfo/unsigned_wrap_ult.ll +++ b/polly/test/ScopInfo/unsigned_wrap_ult.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; Unsigned wrap-around check. ; diff --git a/polly/test/ScopInfo/user_context.ll b/polly/test/ScopInfo/user_context.ll index ce8dd921cec16..74088120e4015 100644 --- a/polly/test/ScopInfo/user_context.ll +++ b/polly/test/ScopInfo/user_context.ll @@ -1,7 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-polly-context=[N] -> {: N = 1024}' '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=CTX -; RUN: opt %loadNPMPolly '-polly-context=[N,M] -> {: 1 = 0}' '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-polly-context=[] -> {: 1 = 0}' '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-context='[N] -> {: N = 1024}' '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=CTX +; RUN: opt %loadNPMPolly -polly-context='[N,M] -> {: 1 = 0}' '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-context='[] -> {: 1 = 0}' '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; void f(int a[], int N) { ; int i; diff --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll index c35ed9060e504..bd13ba8bb6961 100644 --- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll +++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed-conditional.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REMARK -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REMARK +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; REMARK: remark: :0:0: Use user assumption: [n, b] -> { : n <= 100 or (b = 0 and n >= 101) } ; diff --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll index 2afe99fd2c53b..45f59170942ed 100644 --- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll +++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-signed.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Context: ; CHECK-NEXT: [n] -> { : -9223372036854775808 <= n <= 100 } diff --git a/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll b/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll index 3479558062671..fb71c75aa75e4 100644 --- a/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll +++ b/polly/test/ScopInfo/user_provided_assumptions-in-bb-unsigned.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REMARK -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=REMARK +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; REMARK: remark: :0:0: SCoP begins here. ; REMARK-NEXT: remark: :0:0: Use user assumption: [n] -> { : n <= 100 } diff --git a/polly/test/ScopInfo/user_provided_assumptions.ll b/polly/test/ScopInfo/user_provided_assumptions.ll index 0bd99ea3fcb35..49b23b1e784dc 100644 --- a/polly/test/ScopInfo/user_provided_assumptions.ll +++ b/polly/test/ScopInfo/user_provided_assumptions.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP ; ; CHECK: remark: :0:0: SCoP begins here. ; CHECK-NEXT: remark: :0:0: Use user assumption: [M, N] -> { : N <= 2147483647 - M } diff --git a/polly/test/ScopInfo/user_provided_assumptions_2.ll b/polly/test/ScopInfo/user_provided_assumptions_2.ll index 1499ab98f7369..f8643b68cc63f 100644 --- a/polly/test/ScopInfo/user_provided_assumptions_2.ll +++ b/polly/test/ScopInfo/user_provided_assumptions_2.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP ; ; CHECK: remark: :0:0: SCoP begins here. ; CHECK-NEXT: remark: :0:0: Use user assumption: { : } diff --git a/polly/test/ScopInfo/user_provided_assumptions_3.ll b/polly/test/ScopInfo/user_provided_assumptions_3.ll index aa1f72dddde9d..70f8f359e16cd 100644 --- a/polly/test/ScopInfo/user_provided_assumptions_3.ll +++ b/polly/test/ScopInfo/user_provided_assumptions_3.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=SCOP ; ; CHECK: remark: :0:0: SCoP begins here. ; CHECK-NEXT: remark: :0:0: Use user assumption: [N] -> { : N >= 2 } diff --git a/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll b/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll index a6eed5df2063e..3e7883db48fcb 100644 --- a/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll +++ b/polly/test/ScopInfo/user_provided_non_dominating_assumptions.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-precise-inbounds -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-precise-inbounds -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: remark: :0:0: SCoP begins here. ; CHECK-NEXT: remark: :0:0: Use user assumption: [i, N, M] -> { : N <= i or (N > i and N >= 0) } @@ -17,7 +18,8 @@ ; -; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom' -polly-print-scops -polly-precise-inbounds -disable-output -pass-remarks-output=%t.yaml < %s 2>&1 +; RUN: opt %loadNPMPolly -pass-remarks-analysis="polly-scops" '-passes=print' \ +; RUN: -polly-precise-inbounds -disable-output < %s 2>&1 -pass-remarks-output=%t.yaml ; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s ; YAML: --- !Analysis ; YAML: Pass: polly-scops diff --git a/polly/test/ScopInfo/variant_base_pointer.ll b/polly/test/ScopInfo/variant_base_pointer.ll index 36beaf5f0f016..32cb114fab05a 100644 --- a/polly/test/ScopInfo/variant_base_pointer.ll +++ b/polly/test/ScopInfo/variant_base_pointer.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-detect -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s -; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true '-passes=polly' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true '-passes=print,print' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-ignore-aliasing -polly-invariant-load-hoisting=true -passes=polly-codegen -disable-output < %s ; ; %tmp is added to the list of required hoists by -polly-scops and just ; assumed to be hoisted. Only -polly-scops recognizes it to be unhoistable diff --git a/polly/test/ScopInfo/variant_load_empty_domain.ll b/polly/test/ScopInfo/variant_load_empty_domain.ll index 5602c443b25d3..6a28bd0405fdd 100644 --- a/polly/test/ScopInfo/variant_load_empty_domain.ll +++ b/polly/test/ScopInfo/variant_load_empty_domain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invariant Accesses: { ; CHECK-NEXT: } diff --git a/polly/test/ScopInfo/wraping_signed_expr_0.ll b/polly/test/ScopInfo/wraping_signed_expr_0.ll index 3a663f57c2774..f5f06bfd7d336 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_0.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_0.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, char N, char p) { ; for (char i = 0; i < N; i++) { diff --git a/polly/test/ScopInfo/wraping_signed_expr_1.ll b/polly/test/ScopInfo/wraping_signed_expr_1.ll index 8963e86bc6157..e04257acc2010 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_1.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(long *A, long N, long p) { ; for (long i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/wraping_signed_expr_2.ll b/polly/test/ScopInfo/wraping_signed_expr_2.ll index 97cb2c05b16a0..2511c0d646086 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_2.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int N, int p) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/wraping_signed_expr_3.ll b/polly/test/ScopInfo/wraping_signed_expr_3.ll index 50e2eda2ce574..2106bdf4c0686 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_3.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_3.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(int *A, int N, int p) { ; for (int i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/wraping_signed_expr_4.ll b/polly/test/ScopInfo/wraping_signed_expr_4.ll index 4ddb43a01bf24..3ea17f6e266bf 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_4.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_4.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(char *A, char N, char p) { ; for (char i = 0; i < N; i++) diff --git a/polly/test/ScopInfo/wraping_signed_expr_5.ll b/polly/test/ScopInfo/wraping_signed_expr_5.ll index 440d32bab72a5..90706a3d3bc46 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_5.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_5.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; We should not generate runtime check for ((int)r1 + (int)r2) as it is known not ; to overflow. However (p + q) can, thus checks are needed. diff --git a/polly/test/ScopInfo/wraping_signed_expr_6.ll b/polly/test/ScopInfo/wraping_signed_expr_6.ll index 7bec9533440fb..9cf67fc101805 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_6.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_6.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invalid Context: ; CHECK: [N] -> { : N >= 129 } diff --git a/polly/test/ScopInfo/wraping_signed_expr_7.ll b/polly/test/ScopInfo/wraping_signed_expr_7.ll index 2d836e191f858..d18d2b2df3e12 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_7.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_7.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Invalid Context: ; CHECK: [N] -> { : N >= 129 } diff --git a/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll b/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll index 4964a123d0be1..84626861bd39b 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_slow_1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; This checks that the no-wraps checks will be computed fast as some example ; already showed huge slowdowns even though the inbounds and nsw flags were diff --git a/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll b/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll index a6db7c06d072c..b4dd567bafa6b 100644 --- a/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll +++ b/polly/test/ScopInfo/wraping_signed_expr_slow_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; This checks that the no-wraps checks will be computed fast as some example ; already showed huge slowdowns even though the inbounds and nsw flags were diff --git a/polly/test/ScopInfo/zero_ext_of_truncate.ll b/polly/test/ScopInfo/zero_ext_of_truncate.ll index b509951bbf0d5..cbe4af05169f8 100644 --- a/polly/test/ScopInfo/zero_ext_of_truncate.ll +++ b/polly/test/ScopInfo/zero_ext_of_truncate.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(unsigned *restrict I, unsigned *restrict A, unsigned N, unsigned M) { ; for (unsigned i = 0; i < N; i++) { diff --git a/polly/test/ScopInfo/zero_ext_of_truncate_2.ll b/polly/test/ScopInfo/zero_ext_of_truncate_2.ll index ea3356e01cc9f..b306045276765 100644 --- a/polly/test/ScopInfo/zero_ext_of_truncate_2.ll +++ b/polly/test/ScopInfo/zero_ext_of_truncate_2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-invariant-load-hoisting=true '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; void f(unsigned long *restrict I, unsigned *restrict A, unsigned N) { ; for (unsigned i = 0; i < N; i++) { diff --git a/polly/test/ScopInfo/zero_ext_space_mismatch.ll b/polly/test/ScopInfo/zero_ext_space_mismatch.ll index 9fd1afae4b889..3c02ae295b5ba 100644 --- a/polly/test/ScopInfo/zero_ext_space_mismatch.ll +++ b/polly/test/ScopInfo/zero_ext_space_mismatch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output < %s 2>&1 | FileCheck %s ; ; CHECK: Assumed Context: ; CHECK-NEXT: [dim] -> { : dim > 0 } diff --git a/polly/test/ScopInliner/ignore-declares.ll b/polly/test/ScopInliner/ignore-declares.ll index 85198b728a9bb..5c0cfa103f0bf 100644 --- a/polly/test/ScopInliner/ignore-declares.ll +++ b/polly/test/ScopInliner/ignore-declares.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-detect-full-functions '-passes=cgscc(polly-inline),polly-custom' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-detect-full-functions '-passes=cgscc(polly-inline),function(print)' -disable-output < %s ; Check that we do not crash if there are declares. We should skip function ; declarations and not try to query for domtree. diff --git a/polly/test/ScopInliner/invariant-load-func.ll b/polly/test/ScopInliner/invariant-load-func.ll index 6046fc0f38650..58c556a455fb9 100644 --- a/polly/test/ScopInliner/invariant-load-func.ll +++ b/polly/test/ScopInliner/invariant-load-func.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-detect-full-functions -polly-invariant-load-hoisting '-passes=cgscc(polly-inline),polly-custom' -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-detect-full-functions -polly-invariant-load-hoisting '-passes=cgscc(polly-inline),function(print)' -disable-output < %s 2>&1 | FileCheck %s ; Check that we inline a function that requires invariant load hoisting ; correctly. diff --git a/polly/test/ScopInliner/simple-inline-loop.ll b/polly/test/ScopInliner/simple-inline-loop.ll index 77a5ddda93adc..f12798a3d831a 100644 --- a/polly/test/ScopInliner/simple-inline-loop.ll +++ b/polly/test/ScopInliner/simple-inline-loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-detect-full-functions '-passes=cgscc(polly-inline),polly-custom' -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly -polly-detect-full-functions '-passes=cgscc(polly-inline),function(print)' -disable-output < %s 2>&1 | FileCheck %s ; Check that we get the 2 nested loops by inlining `to_be_inlined` into ; `inline_site`. diff --git a/polly/test/Simplify/coalesce_3partials.ll b/polly/test/Simplify/coalesce_3partials.ll index 5411b6e430c66..4112787e51bfa 100644 --- a/polly/test/Simplify/coalesce_3partials.ll +++ b/polly/test/Simplify/coalesce_3partials.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Combine 3 partial accesses into one. ; diff --git a/polly/test/Simplify/coalesce_disjointelements.ll b/polly/test/Simplify/coalesce_disjointelements.ll index 888daeff39d8d..b140f287e27f7 100644 --- a/polly/test/Simplify/coalesce_disjointelements.ll +++ b/polly/test/Simplify/coalesce_disjointelements.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Combine four partial stores into two. ; The stores write to the same array, but never the same element. diff --git a/polly/test/Simplify/coalesce_overlapping.ll b/polly/test/Simplify/coalesce_overlapping.ll index f492222461b34..ee716fc12f095 100644 --- a/polly/test/Simplify/coalesce_overlapping.ll +++ b/polly/test/Simplify/coalesce_overlapping.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Combine two partial stores (with overlapping domains) into one. ; diff --git a/polly/test/Simplify/coalesce_partial.ll b/polly/test/Simplify/coalesce_partial.ll index 4df91d43fc46d..aea691f43e934 100644 --- a/polly/test/Simplify/coalesce_partial.ll +++ b/polly/test/Simplify/coalesce_partial.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Combine two partial stores (with disjoint domains) into one. ; diff --git a/polly/test/Simplify/dead_access_load.ll b/polly/test/Simplify/dead_access_load.ll index 399c02381c890..66f94795ea6e4 100644 --- a/polly/test/Simplify/dead_access_load.ll +++ b/polly/test/Simplify/dead_access_load.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Remove a dead load-instruction ; (an load whose result is not used anywhere) diff --git a/polly/test/Simplify/dead_access_phi.ll b/polly/test/Simplify/dead_access_phi.ll index 9344a284b311a..fb40e4cc45b35 100644 --- a/polly/test/Simplify/dead_access_phi.ll +++ b/polly/test/Simplify/dead_access_phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Remove a dead PHI write/read pair ; (accesses that are effectively not used) diff --git a/polly/test/Simplify/dead_access_value.ll b/polly/test/Simplify/dead_access_value.ll index 6db242c97dac0..a8ff7f28542b7 100644 --- a/polly/test/Simplify/dead_access_value.ll +++ b/polly/test/Simplify/dead_access_value.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Remove a dead value write/read pair ; (accesses that are effectively not used) diff --git a/polly/test/Simplify/dead_instruction.ll b/polly/test/Simplify/dead_instruction.ll index 785b5ba154187..81e55e1c7bb30 100644 --- a/polly/test/Simplify/dead_instruction.ll +++ b/polly/test/Simplify/dead_instruction.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Remove a dead instruction ; (an instruction whose result is not used anywhere) diff --git a/polly/test/Simplify/emptyaccessdomain.ll b/polly/test/Simplify/emptyaccessdomain.ll index 917ae7f7d2c94..9b06cec965a9d 100644 --- a/polly/test/Simplify/emptyaccessdomain.ll +++ b/polly/test/Simplify/emptyaccessdomain.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; for (int j = 0; j < n; j += 1) { ; A[0] = 42.0; diff --git a/polly/test/Simplify/exit_phi_accesses-2.ll b/polly/test/Simplify/exit_phi_accesses-2.ll index d56fed4848ff3..379c7e0ace0a3 100644 --- a/polly/test/Simplify/exit_phi_accesses-2.ll +++ b/polly/test/Simplify/exit_phi_accesses-2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -polly-print-simplify -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print,scop(print)' -disable-output < %s | FileCheck %s ; ; The use of %sum.next by %phi counts as an escaping use. ; Don't remove the scalar write of %sum.next. diff --git a/polly/test/Simplify/func-b320a7.ll b/polly/test/Simplify/func-b320a7.ll index 65aa9cd28314e..5aa2caba95cfc 100644 --- a/polly/test/Simplify/func-b320a7.ll +++ b/polly/test/Simplify/func-b320a7.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=print,polly-optree' -disable-output < %s | FileCheck %s -match-full-lines ; llvm.org/PR47098 ; Use-after-free by reference to Stmt remaining in InstStmtMap after removing it has been removed by Scop::simplifyScop. diff --git a/polly/test/Simplify/gemm.ll b/polly/test/Simplify/gemm.ll index 6e3a43e0ebbad..5120de2db7677 100644 --- a/polly/test/Simplify/gemm.ll +++ b/polly/test/Simplify/gemm.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s ; ; void gemm(float A[][1024], float B[][1024], float C[][1024]) { ; for (long i = 0; i < 1024; i++) diff --git a/polly/test/Simplify/nocoalesce_differentvalues.ll b/polly/test/Simplify/nocoalesce_differentvalues.ll index cba62549227ae..33d04b2f96de8 100644 --- a/polly/test/Simplify/nocoalesce_differentvalues.ll +++ b/polly/test/Simplify/nocoalesce_differentvalues.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Do not combine stores that write different values. ; diff --git a/polly/test/Simplify/nocoalesce_elementmismatch.ll b/polly/test/Simplify/nocoalesce_elementmismatch.ll index b589d13779e52..608b055e691df 100644 --- a/polly/test/Simplify/nocoalesce_elementmismatch.ll +++ b/polly/test/Simplify/nocoalesce_elementmismatch.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Do not combine stores that do not write to different elements in the ; same instance. diff --git a/polly/test/Simplify/nocoalesce_readbetween.ll b/polly/test/Simplify/nocoalesce_readbetween.ll index b61ad9d8031e0..e112b036cd778 100644 --- a/polly/test/Simplify/nocoalesce_readbetween.ll +++ b/polly/test/Simplify/nocoalesce_readbetween.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Do not combine stores if there is a read between them. ; Note: The read between is unused, so will be removed by markAndSweep. diff --git a/polly/test/Simplify/nocoalesce_writebetween.ll b/polly/test/Simplify/nocoalesce_writebetween.ll index be7d159554034..fd5eee52eaf5c 100644 --- a/polly/test/Simplify/nocoalesce_writebetween.ll +++ b/polly/test/Simplify/nocoalesce_writebetween.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Do not combine stores if there is a write between them. ; diff --git a/polly/test/Simplify/notdead_region_exitphi.ll b/polly/test/Simplify/notdead_region_exitphi.ll index 1bd9bfe10a99d..42fafb446cea3 100644 --- a/polly/test/Simplify/notdead_region_exitphi.ll +++ b/polly/test/Simplify/notdead_region_exitphi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Do not remove dependencies of a phi node in a region's exit block. ; diff --git a/polly/test/Simplify/notdead_region_innerphi.ll b/polly/test/Simplify/notdead_region_innerphi.ll index b59d6dc60b089..966448c9884b2 100644 --- a/polly/test/Simplify/notdead_region_innerphi.ll +++ b/polly/test/Simplify/notdead_region_innerphi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Do not remove dependencies of a phi node within a region statement (%phi). ; diff --git a/polly/test/Simplify/notredundant_region_loop.ll b/polly/test/Simplify/notredundant_region_loop.ll index 859bd459f72d6..88f6c41521739 100644 --- a/polly/test/Simplify/notredundant_region_loop.ll +++ b/polly/test/Simplify/notredundant_region_loop.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -polly-allow-nonaffine-loops -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -polly-allow-nonaffine-loops -disable-output < %s | FileCheck %s -match-full-lines ; ; Do not remove the store in region_entry. It can be executed multiple times ; due to being part of a non-affine loop. diff --git a/polly/test/Simplify/notredundant_region_middle.ll b/polly/test/Simplify/notredundant_region_middle.ll index a742ea889fb1f..43c05436809ba 100644 --- a/polly/test/Simplify/notredundant_region_middle.ll +++ b/polly/test/Simplify/notredundant_region_middle.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Do not remove redundant stores in the middle of region statements. ; The store in region_true could be removed, but in practice we do try to diff --git a/polly/test/Simplify/notredundant_synthesizable_unknownit.ll b/polly/test/Simplify/notredundant_synthesizable_unknownit.ll index 8542b7927f860..8a9aec8be9e05 100644 --- a/polly/test/Simplify/notredundant_synthesizable_unknownit.ll +++ b/polly/test/Simplify/notredundant_synthesizable_unknownit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Do not remove the scalar value write of %i.trunc in inner.for. ; It is used by body. diff --git a/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll b/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll index 06b082c3f81fa..7218f328f9ca3 100644 --- a/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll +++ b/polly/test/Simplify/out-of-scop-use-in-region-entry-phi-node.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-scops -polly-print-simplify -disable-output < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print,scop(print)' -disable-output < %s 2>&1 | FileCheck %s ; ; %tmp5 must keep the Value WRITE MemoryAccess, because as an incoming value of ; %tmp4, it is an "external use". diff --git a/polly/test/Simplify/overwritten.ll b/polly/test/Simplify/overwritten.ll index bc5b2dffd443d..eccdd8044d073 100644 --- a/polly/test/Simplify/overwritten.ll +++ b/polly/test/Simplify/overwritten.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s ; ; Remove a store that is overwritten by another store in the same statement. ; diff --git a/polly/test/Simplify/overwritten_3phi.ll b/polly/test/Simplify/overwritten_3phi.ll index 861c9acda3e9c..4cee4f13d26d0 100644 --- a/polly/test/Simplify/overwritten_3phi.ll +++ b/polly/test/Simplify/overwritten_3phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Remove identical writes ; (two stores in the same statement that write the same value to the same diff --git a/polly/test/Simplify/overwritten_3store.ll b/polly/test/Simplify/overwritten_3store.ll index cfd5a08143d60..c9f06c85dba53 100644 --- a/polly/test/Simplify/overwritten_3store.ll +++ b/polly/test/Simplify/overwritten_3store.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s ; ; Remove a store that is overwritten by another store in the same statement. ; Check that even multiple stores are removed. diff --git a/polly/test/Simplify/overwritten_implicit_and_explicit.ll b/polly/test/Simplify/overwritten_implicit_and_explicit.ll index 306e726e7808a..b1b7635e26263 100644 --- a/polly/test/Simplify/overwritten_implicit_and_explicit.ll +++ b/polly/test/Simplify/overwritten_implicit_and_explicit.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Remove a store that is overwritten by another store in the same statement. ; Check that this works even if one of the writes is a scalar MemoryKind. diff --git a/polly/test/Simplify/overwritten_loadbetween.ll b/polly/test/Simplify/overwritten_loadbetween.ll index 170838ddb8a1a..cdca2f11531e7 100644 --- a/polly/test/Simplify/overwritten_loadbetween.ll +++ b/polly/test/Simplify/overwritten_loadbetween.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s ; ; Do not remove overwrites when the value is read before. ; diff --git a/polly/test/Simplify/overwritten_scalar.ll b/polly/test/Simplify/overwritten_scalar.ll index a1e7da40554d5..700adb6aed2ec 100644 --- a/polly/test/Simplify/overwritten_scalar.ll +++ b/polly/test/Simplify/overwritten_scalar.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s ; ; Remove identical writes ; (two stores in the same statement that write the same value to the same diff --git a/polly/test/Simplify/pass_existence.ll b/polly/test/Simplify/pass_existence.ll index 6d9c99f9dc270..4d1d800b2a80b 100644 --- a/polly/test/Simplify/pass_existence.ll +++ b/polly/test/Simplify/pass_existence.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -disable-output '-passes=polly-custom' -polly-print-simplify -aa-pipeline=basic-aa < %s < %s | FileCheck %s +; RUN: opt %loadNPMPolly -disable-output "-passes=scop(print)" < %s -aa-pipeline=basic-aa < %s | FileCheck %s ; ; Simple test for the existence of the Simplify pass. ; diff --git a/polly/test/Simplify/phi_in_regionstmt.ll b/polly/test/Simplify/phi_in_regionstmt.ll index ba1cffee1a0df..2bb05738955a3 100644 --- a/polly/test/Simplify/phi_in_regionstmt.ll +++ b/polly/test/Simplify/phi_in_regionstmt.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; The PHINode %cond91.sink.sink.us.sink.6 is in the middle of a region ; statement. diff --git a/polly/test/Simplify/pr33323.ll b/polly/test/Simplify/pr33323.ll index 5130eb8488ca2..22921d5fba509 100644 --- a/polly/test/Simplify/pr33323.ll +++ b/polly/test/Simplify/pr33323.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s ; ; llvm.org/PR33323 ; diff --git a/polly/test/Simplify/redundant.ll b/polly/test/Simplify/redundant.ll index f2489a74eb899..540e537460e54 100644 --- a/polly/test/Simplify/redundant.ll +++ b/polly/test/Simplify/redundant.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Remove redundant store (a store that writes the same value already ; at the destination) diff --git a/polly/test/Simplify/redundant_differentindex.ll b/polly/test/Simplify/redundant_differentindex.ll index efd20e90ae748..5ce25836dedbd 100644 --- a/polly/test/Simplify/redundant_differentindex.ll +++ b/polly/test/Simplify/redundant_differentindex.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; A store that has a different index than the load it is storing is ; not redundant. diff --git a/polly/test/Simplify/redundant_partialwrite.ll b/polly/test/Simplify/redundant_partialwrite.ll index 357b63206b0f5..ac5ca907fff6f 100644 --- a/polly/test/Simplify/redundant_partialwrite.ll +++ b/polly/test/Simplify/redundant_partialwrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-import-jscop-postfix=transformed '-passes=polly-custom' -polly-print-import-jscop -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadPolly -polly-import-jscop-postfix=transformed -polly-print-import-jscop -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines ; ; Remove a redundant store, if its partial domain is a subset of the ; read's domain. diff --git a/polly/test/Simplify/redundant_region.ll b/polly/test/Simplify/redundant_region.ll index c60d28b7039dd..927aac6c4af05 100644 --- a/polly/test/Simplify/redundant_region.ll +++ b/polly/test/Simplify/redundant_region.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; Remove redundant store (a store that writes the same value already ; at the destination) in a region. diff --git a/polly/test/Simplify/redundant_region_scalar.ll b/polly/test/Simplify/redundant_region_scalar.ll index 3de50c04b614f..72d570d46bdce 100644 --- a/polly/test/Simplify/redundant_region_scalar.ll +++ b/polly/test/Simplify/redundant_region_scalar.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; Remove redundant store (a store that writes the same value already ; at the destination) in a region. diff --git a/polly/test/Simplify/redundant_scalarwrite.ll b/polly/test/Simplify/redundant_scalarwrite.ll index 13ca40f8e1b87..84cb971be11fd 100644 --- a/polly/test/Simplify/redundant_scalarwrite.ll +++ b/polly/test/Simplify/redundant_scalarwrite.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; Remove redundant scalar stores. ; diff --git a/polly/test/Simplify/redundant_storebetween.ll b/polly/test/Simplify/redundant_storebetween.ll index 47d9cfde2d3ce..6540d7751e469 100644 --- a/polly/test/Simplify/redundant_storebetween.ll +++ b/polly/test/Simplify/redundant_storebetween.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly "-passes=scop(print)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines ; ; Don't remove store where there is another store to the same target ; in-between them. diff --git a/polly/test/Simplify/scalability1.ll b/polly/test/Simplify/scalability1.ll index 969aade275af2..c6e36f9dcdefb 100644 --- a/polly/test/Simplify/scalability1.ll +++ b/polly/test/Simplify/scalability1.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-ignore-inbounds '-passes=polly-custom' -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-ignore-inbounds '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Test scalability. ; diff --git a/polly/test/Simplify/scalability2.ll b/polly/test/Simplify/scalability2.ll index 7951094867f2f..adcf9eef348a9 100644 --- a/polly/test/Simplify/scalability2.ll +++ b/polly/test/Simplify/scalability2.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly -polly-ignore-inbounds '-passes=polly-custom' -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly -polly-ignore-inbounds '-passes=print' -disable-output < %s | FileCheck %s -match-full-lines ; ; Test scalability. ; diff --git a/polly/test/Simplify/sweep_mapped_phi.ll b/polly/test/Simplify/sweep_mapped_phi.ll index ad41f2566e2b5..495d77a22f618 100644 --- a/polly/test/Simplify/sweep_mapped_phi.ll +++ b/polly/test/Simplify/sweep_mapped_phi.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; Map %phi to A[j], so the scalar write in Stmt_for_bodyA can be removed. ; diff --git a/polly/test/Simplify/sweep_mapped_value.ll b/polly/test/Simplify/sweep_mapped_value.ll index a50c013ac7917..c83941a8f0ba5 100644 --- a/polly/test/Simplify/sweep_mapped_value.ll +++ b/polly/test/Simplify/sweep_mapped_value.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s -match-full-lines ; ; Map %val to A[j], so the scalar write on Stmt_for_bodyB can be removed. ; diff --git a/polly/test/Simplify/ununsed_read_in_region_entry.ll b/polly/test/Simplify/ununsed_read_in_region_entry.ll index 4c05de975fdf8..f2436c263a96a 100644 --- a/polly/test/Simplify/ununsed_read_in_region_entry.ll +++ b/polly/test/Simplify/ununsed_read_in_region_entry.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-simplify -disable-output < %s | FileCheck %s -match-full-lines -; RUN: opt %loadNPMPolly '-passes=polly' -S < %s | FileCheck %s -check-prefix=CODEGEN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output< %s | FileCheck %s -match-full-lines +; RUN: opt %loadNPMPolly '-passes=polly-simplify,polly-codegen' -S < %s | FileCheck %s -check-prefix=CODEGEN ; ; for (int i = 0; i < n; i+=1) { ; (void)A[0]; diff --git a/polly/test/Support/Plugins.ll b/polly/test/Support/Plugins.ll index b75dd872ad404..872a32fad4fed 100644 --- a/polly/test/Support/Plugins.ll +++ b/polly/test/Support/Plugins.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-ast -S < %s | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=polly-prepare,scop(print)' -S < %s \ +; RUN: | FileCheck %s ; This testcase tests plugin registration. Check-lines below serve to verify ; that the passes actually ran. diff --git a/polly/test/Support/exportjson.ll b/polly/test/Support/exportjson.ll index 6bdf5a4c33cf3..22cfea23534cb 100644 --- a/polly/test/Support/exportjson.ll +++ b/polly/test/Support/exportjson.ll @@ -1,6 +1,6 @@ ; RUN: rm -rf %t ; RUN: mkdir -p %t -; RUN: opt %loadNPMPolly -polly-import-jscop-dir=%t '-passes=polly-custom' -disable-output < %s +; RUN: opt %loadNPMPolly -polly-import-jscop-dir=%t -polly -O2 -polly-export -S < %s ; RUN: FileCheck %s -input-file %t/exportjson___%entry.split---%return.jscop ; ; for (int j = 0; j < n; j += 1) { @@ -9,22 +9,28 @@ ; define void @exportjson(i32 %n, ptr noalias nonnull %A) { entry: - br label %entry.split + br label %for -entry.split: - %j.cmp1 = icmp sgt i32 %n, 0 - br i1 %j.cmp1, label %body.lr.ph, label %return +for: + %j = phi i32 [0, %entry], [%j.inc, %inc] + %j.cmp = icmp slt i32 %j, %n + br i1 %j.cmp, label %body, label %exit -body.lr.ph: - store double 4.200000e+01, ptr %A, align 8 + body: + store double 42.0, ptr %A + br label %inc + +inc: + %j.inc = add nuw nsw i32 %j, 1 + br label %for + +exit: br label %return return: ret void } -attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) } - ; CHECK: { ; CHECK-NEXT: "arrays": [ diff --git a/polly/test/Support/isl-args.ll b/polly/test/Support/isl-args.ll index 6c8b2e97682e8..206cb73bfc5ab 100644 --- a/polly/test/Support/isl-args.ll +++ b/polly/test/Support/isl-args.ll @@ -1,7 +1,7 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-isl-arg=-V < %s | FileCheck %s -match-full-lines --check-prefix=VERSION -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-isl-arg=-h < %s | FileCheck %s -match-full-lines --check-prefix=HELP -; RUN: not opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-isl-arg=-asdf < %s 2>&1 | FileCheck %s -match-full-lines --check-prefix=UNKNOWN -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -disable-output -polly-isl-arg=--schedule-algorithm=feautrier < %s +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -polly-isl-arg=-V < %s | FileCheck %s -match-full-lines --check-prefix=VERSION +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -polly-isl-arg=-h < %s | FileCheck %s -match-full-lines --check-prefix=HELP +; RUN: not opt %loadNPMPolly '-passes=print' -disable-output -polly-isl-arg=-asdf < %s 2>&1| FileCheck %s -match-full-lines --check-prefix=UNKNOWN +; RUN: opt %loadNPMPolly '-passes=print' -disable-output -polly-isl-arg=--schedule-algorithm=feautrier < %s ; VERSION: isl-{{.*}}-IMath-32 ; HELP: Usage: -polly-isl-arg [OPTION...] diff --git a/polly/test/Support/pipelineposition.ll b/polly/test/Support/pipelineposition.ll index 1ddfb5879ce16..a4506ba1d64ed 100644 --- a/polly/test/Support/pipelineposition.ll +++ b/polly/test/Support/pipelineposition.ll @@ -1,6 +1,8 @@ -; RUN: opt %loadNPMPolly -O3 -polly -polly-position=early -disable-output -polly-print-scops < %s 2>&1 | FileCheck %s --check-prefix=NOINLINE -; RUN: opt %loadNPMPolly -O3 -polly -polly-position=early -polly-run-inliner -disable-output -polly-print-scops < %s 2>&1 | FileCheck %s --check-prefix=INLINED1 -; RUN: opt %loadNPMPolly -O3 -polly -polly-position=before-vectorizer -disable-output -polly-print-scops < %s 2>&1 | FileCheck %s --check-prefix=INLINED3 +; RUN: opt %loadNPMPolly -O3 -polly -polly-position=early -disable-output -debug-only=polly-scops < %s 2>&1 | FileCheck %s --check-prefix=NOINLINE +; RUN: opt %loadNPMPolly -O3 -polly -polly-position=early -polly-run-inliner -disable-output -debug-only=polly-scops < %s 2>&1 | FileCheck %s --check-prefix=INLINED1 +; RUN: opt %loadNPMPolly -O3 -polly -polly-position=before-vectorizer -disable-output -debug-only=polly-scops < %s 2>&1 | FileCheck %s --check-prefix=INLINED3 +; +; REQUIRES: asserts ; ; void callee(int n, double A[], int i) { ; for (int j = 0; j < n; j += 1) diff --git a/polly/test/lit.site.cfg.in b/polly/test/lit.site.cfg.in index ca901b8825ced..f22063e796def 100644 --- a/polly/test/lit.site.cfg.in +++ b/polly/test/lit.site.cfg.in @@ -38,10 +38,14 @@ if config.llvm_polly_link_into_tools == '' or \ config.llvm_polly_link_into_tools.lower() == 'false' or \ config.llvm_polly_link_into_tools.lower() == 'notfound' or \ config.llvm_polly_link_into_tools.lower() == 'llvm_polly_link_into_tools-notfound': + config.substitutions.append(('%loadPolly', '-load ' + + config.polly_lib_dir + '/LLVMPolly@LLVM_SHLIBEXT@' + + commonOpts )) config.substitutions.append(('%loadNPMPolly', '-load-pass-plugin ' + config.polly_lib_dir + '/LLVMPolly@LLVM_SHLIBEXT@' + commonOpts )) else: + config.substitutions.append(('%loadPolly', commonOpts )) config.substitutions.append(('%loadNPMPolly', commonOpts )) import lit.llvm diff --git a/polly/test/polly.ll b/polly/test/polly.ll index 0f5467b0e654d..2e455b39a9cd4 100644 --- a/polly/test/polly.ll +++ b/polly/test/polly.ll @@ -1,4 +1,4 @@ -; RUN: opt %loadNPMPolly '-passes=polly-custom' -polly-print-scops -S < %s 2>&1 | FileCheck %s +; RUN: opt %loadNPMPolly '-passes=print' -S < %s 2>&1 | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" define void @foo() nounwind { start: From bc08e69959ecefecc7ea41b648a659aa19c458c8 Mon Sep 17 00:00:00 2001 From: Naveen Seth Hanig Date: Tue, 4 Nov 2025 07:24:56 +0530 Subject: [PATCH 03/11] [clang][modules] Fix crash in enum visibility lookup for C++20 header units (#166272) Fixes #165445. Fixes a crash when `ASTWriter::GenerateNameLookupTable` processes enum constants from C++20 header units. The special handling for enum constants, introduced in fccc6ee, doesn't account for declarations whose owning module is a C++20 header unit. It calls `isNamedModule()` on the result of `getTopLevelOwningNamedModule()`, which returns null for header units, causing a null pointer dereference. --- clang/lib/Serialization/ASTWriter.cpp | 3 +- ...rash-enum-visibility-with-header-unit.cppm | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 clang/test/Modules/crash-enum-visibility-with-header-unit.cppm diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 3ac338e013deb..b1fd151790d96 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -4374,8 +4374,7 @@ class ASTDeclContextNameLookupTrait // parent of parent. We DON'T remove the enum constant from its parent. So // we don't need to care about merging problems here. if (auto *ECD = dyn_cast(D); - ECD && DC.isFileContext() && ECD->getOwningModule() && - ECD->getTopLevelOwningNamedModule()->isNamedModule()) { + ECD && DC.isFileContext() && ECD->getTopLevelOwningNamedModule()) { if (llvm::all_of( DC.noload_lookup( cast(ECD->getDeclContext())->getDeclName()), diff --git a/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm b/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm new file mode 100644 index 0000000000000..90c57796dcf7e --- /dev/null +++ b/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm @@ -0,0 +1,46 @@ +// Fixes #165445 + +// RUN: rm -rf %t +// RUN: mkdir -p %t +// RUN: split-file %s %t +// +// RUN: %clang_cc1 -std=c++20 -x c++-user-header %t/header.h \ +// RUN: -emit-header-unit -o %t/header.pcm +// +// RUN: %clang_cc1 -std=c++20 %t/A.cppm -fmodule-file=%t/header.pcm \ +// RUN: -emit-module-interface -o %t/A.pcm +// +// RUN: %clang_cc1 -std=c++20 %t/B.cppm -fmodule-file=%t/header.pcm \ +// RUN: -emit-module-interface -o %t/B.pcm +// +// RUN: %clang_cc1 -std=c++20 %t/use.cpp \ +// RUN: -fmodule-file=A=%t/A.pcm -fmodule-file=B=%t/B.pcm \ +// RUN: -fmodule-file=%t/header.pcm \ +// RUN: -verify -fsyntax-only + +//--- enum.h +enum E { Value }; + +//--- header.h +#include "enum.h" + +//--- A.cppm +module; +#include "enum.h" +export module A; + +auto e = Value; + +//--- B.cppm +export module B; +import "header.h"; + +auto e = Value; + +//--- use.cpp +// expected-no-diagnostics +import A; +import B; +#include "enum.h" + +auto e = Value; From 03e78a9976cf7a313c841732432002cbb4146d10 Mon Sep 17 00:00:00 2001 From: Qiu Chaofan Date: Tue, 4 Nov 2025 10:18:53 +0800 Subject: [PATCH 04/11] [Clang][Sema] Check null after ExtractTypeForDeductionGuide (#165776) --- clang/docs/ReleaseNotes.rst | 1 + clang/lib/Sema/SemaTemplateDeductionGuide.cpp | 3 ++- clang/test/SemaTemplate/ctad.cpp | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index db695d86b5416..2c575cd1d4289 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -505,6 +505,7 @@ Bug Fixes to C++ Support nontrivial member when another member has an initializer. (#GH81774) - Fixed a template depth issue when parsing lambdas inside a type constraint. (#GH162092) - Diagnose unresolved overload sets in non-dependent compound requirements. (#GH51246) (#GH97753) +- Fix a crash when extracting unavailable member type from alias in template deduction. (#GH165560) Bug Fixes to AST Handling ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp index ad50600f6399c..bfcd3978817ca 100644 --- a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp +++ b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp @@ -659,7 +659,8 @@ struct ConvertConstructorToDeductionGuideTransform { SemaRef, MaterializedTypedefs, NestedPattern, TransformingOuterPatterns ? &Args : nullptr) .transform(NewDI); - + if (!NewDI) + return nullptr; // Resolving a wording defect, we also inherit default arguments from the // constructor. ExprResult NewDefArg; diff --git a/clang/test/SemaTemplate/ctad.cpp b/clang/test/SemaTemplate/ctad.cpp index 1a575ea527006..60603f0c963a5 100644 --- a/clang/test/SemaTemplate/ctad.cpp +++ b/clang/test/SemaTemplate/ctad.cpp @@ -104,3 +104,15 @@ namespace ConvertDeducedTemplateArgument { auto x = C(D()); } + +namespace pr165560 { +template struct S { + using A = T; + template struct I { // expected-note{{candidate function template not viable: requires 1 argument, but 0 were provided}} \ + // expected-note{{implicit deduction guide declared as 'template I(pr165560::S::I) -> pr165560::S::I'}} + I(typename A::F) {} // expected-error{{type 'A' (aka 'int') cannot be used prior to '::' because it has no members}} + }; +}; +S::I i; // expected-error{{no viable constructor or deduction guide for deduction of template arguments of 'S::I'}} \ + // expected-note{{while building implicit deduction guide first needed here}} +} From 749a0e1e410b4c47de68dee295ad2d08283050c4 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 3 Nov 2025 18:19:58 -0800 Subject: [PATCH 05/11] update_llc_test_checks: Recognize thumbv7k triples (#166270) --- llvm/utils/UpdateTestChecks/asm.py | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/utils/UpdateTestChecks/asm.py b/llvm/utils/UpdateTestChecks/asm.py index 469e27facedb0..61f0d679f806d 100644 --- a/llvm/utils/UpdateTestChecks/asm.py +++ b/llvm/utils/UpdateTestChecks/asm.py @@ -576,6 +576,7 @@ def get_run_handler(triple): "armv7-apple-ios": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_IOS_RE), "armv7-apple-darwin": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_DARWIN_RE), "armv7k-apple-watchos": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_DARWIN_RE), + "thumbv7k-apple-watchos": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_DARWIN_RE), "thumb": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_RE), "thumb-macho": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_MACHO_RE), "thumbv5-macho": (scrub_asm_arm_eabi, ASM_FUNCTION_ARM_MACHO_RE), From 4d98ee2a22242bbe12f2fdb13ee49be697546259 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 3 Nov 2025 18:20:24 -0800 Subject: [PATCH 06/11] ARM: Add watchos run line to llvm.sincos test (#166271) --- llvm/test/CodeGen/ARM/llvm.sincos.ll | 221 +++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) diff --git a/llvm/test/CodeGen/ARM/llvm.sincos.ll b/llvm/test/CodeGen/ARM/llvm.sincos.ll index 0c2263ee9acbf..1448fac8d864f 100644 --- a/llvm/test/CodeGen/ARM/llvm.sincos.ll +++ b/llvm/test/CodeGen/ARM/llvm.sincos.ll @@ -3,6 +3,7 @@ ; RUN: llc -mtriple=armv7-linux-gnueabi -mcpu=cortex-a8 < %s | FileCheck -check-prefix=GNUEABI %s ; RUN: llc -mtriple=armv7-apple-ios6 -mcpu=cortex-a8 < %s | FileCheck -check-prefixes=IOS,IOS-NO-STRET %s ; RUN: llc -mtriple=armv7-apple-ios7 -mcpu=cortex-a8 < %s | FileCheck -check-prefixes=IOS,IOS-WITH-STRET %s +; RUN: llc -mtriple=thumbv7k-apple-watchos2.0 < %s | FileCheck -check-prefix=WATCHABI %s define { half, half } @test_sincos_f16(half %a) { ; GNU-LABEL: test_sincos_f16: @@ -75,6 +76,23 @@ define { half, half } @test_sincos_f16(half %a) { ; IOS-WITH-STRET-NEXT: mov r0, r5 ; IOS-WITH-STRET-NEXT: add sp, sp, #8 ; IOS-WITH-STRET-NEXT: pop {r4, r5, pc} +; +; WATCHABI-LABEL: test_sincos_f16: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0 +; WATCHABI-NEXT: vcvtb.f16.f32 s1, s1 +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { half, half } @llvm.sincos.f16(half %a) ret { half, half } %result } @@ -130,6 +148,22 @@ define half @test_sincos_f16_only_use_sin(half %a) { ; IOS-WITH-STRET-NEXT: add sp, sp, #8 ; IOS-WITH-STRET-NEXT: pop {lr} ; IOS-WITH-STRET-NEXT: bx lr +; +; WATCHABI-LABEL: test_sincos_f16_only_use_sin: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0 +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { half, half } @llvm.sincos.f16(half %a) %result.0 = extractvalue { half, half } %result, 0 ret half %result.0 @@ -186,6 +220,22 @@ define half @test_sincos_f16_only_use_cos(half %a) { ; IOS-WITH-STRET-NEXT: add sp, sp, #8 ; IOS-WITH-STRET-NEXT: pop {lr} ; IOS-WITH-STRET-NEXT: bx lr +; +; WATCHABI-LABEL: test_sincos_f16_only_use_cos: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s1 +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { half, half } @llvm.sincos.f16(half %a) %result.1 = extractvalue { half, half } %result, 1 ret half %result.1 @@ -366,6 +416,54 @@ define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) { ; IOS-WITH-STRET-NEXT: add sp, sp, #24 ; IOS-WITH-STRET-NEXT: vpop {d8} ; IOS-WITH-STRET-NEXT: pop {r4, r5, pc} +; +; WATCHABI-LABEL: test_sincos_v2f16: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: vpush {d10} +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: vpush {d8} +; WATCHABI-NEXT: .cfi_def_cfa_offset 24 +; WATCHABI-NEXT: .cfi_offset d10, -16 +; WATCHABI-NEXT: .cfi_offset d8, -24 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 32 +; WATCHABI-NEXT: vmov.f32 s16, s0 +; WATCHABI-NEXT: vcvtb.f32.f16 s0, s1 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0 +; WATCHABI-NEXT: vcvtb.f32.f16 s4, s16 +; WATCHABI-NEXT: vmov r0, s0 +; WATCHABI-NEXT: vmov.f32 s0, s4 +; WATCHABI-NEXT: vmov.f32 s20, s1 +; WATCHABI-NEXT: strh.w r0, [sp, #6] +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0 +; WATCHABI-NEXT: vmov r0, s0 +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s20 +; WATCHABI-NEXT: strh.w r0, [sp, #4] +; WATCHABI-NEXT: add r0, sp, #4 +; WATCHABI-NEXT: vld1.32 {d16[0]}, [r0:32] +; WATCHABI-NEXT: vmov r0, s0 +; WATCHABI-NEXT: vcvtb.f16.f32 s0, s1 +; WATCHABI-NEXT: strh.w r0, [sp, #2] +; WATCHABI-NEXT: vmov r0, s0 +; WATCHABI-NEXT: vmovl.u16 q0, d16 +; WATCHABI-NEXT: strh.w r0, [sp] +; WATCHABI-NEXT: mov r0, sp +; WATCHABI-NEXT: vld1.32 {d18[0]}, [r0:32] +; WATCHABI-NEXT: vmovl.u16 q1, d18 +; WATCHABI-NEXT: vmov.f32 s2, s4 +; WATCHABI-NEXT: vmov.f32 s3, s5 +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: vpop {d8} +; WATCHABI-NEXT: vpop {d10} +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a) ret { <2 x half>, <2 x half> } %result } @@ -416,6 +514,20 @@ define { float, float } @test_sincos_f32(float %a) { ; IOS-WITH-STRET-NEXT: pop {r0, r1} ; IOS-WITH-STRET-NEXT: pop {lr} ; IOS-WITH-STRET-NEXT: bx lr +; +; WATCHABI-LABEL: test_sincos_f32: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { float, float } @llvm.sincos.f32(float %a) ret { float, float } %result } @@ -519,6 +631,33 @@ define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) { ; IOS-WITH-STRET-NEXT: vpop {d8} ; IOS-WITH-STRET-NEXT: pop {lr} ; IOS-WITH-STRET-NEXT: bx lr +; +; WATCHABI-LABEL: test_sincos_v2f32: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: vpush {d8, d9, d10} +; WATCHABI-NEXT: .cfi_def_cfa_offset 32 +; WATCHABI-NEXT: .cfi_offset d10, -16 +; WATCHABI-NEXT: .cfi_offset d9, -24 +; WATCHABI-NEXT: .cfi_offset d8, -32 +; WATCHABI-NEXT: vmov.f64 d8, d0 +; WATCHABI-NEXT: vmov.f32 s0, s17 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vmov.f32 s19, s0 +; WATCHABI-NEXT: vmov.f32 s0, s16 +; WATCHABI-NEXT: vmov.f32 s21, s1 +; WATCHABI-NEXT: bl ___sincosf_stret +; WATCHABI-NEXT: vmov.f32 s20, s1 +; WATCHABI-NEXT: vmov.f32 s18, s0 +; WATCHABI-NEXT: vmov.f64 d1, d10 +; WATCHABI-NEXT: vmov.f64 d0, d9 +; WATCHABI-NEXT: vpop {d8, d9, d10} +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a) ret { <2 x float>, <2 x float> } %result } @@ -581,6 +720,20 @@ define { double, double } @test_sincos_f64(double %a) { ; IOS-WITH-STRET-NEXT: add sp, sp, #16 ; IOS-WITH-STRET-NEXT: pop {lr} ; IOS-WITH-STRET-NEXT: bx lr +; +; WATCHABI-LABEL: test_sincos_f64: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 16 +; WATCHABI-NEXT: bl ___sincos_stret +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { double, double } @llvm.sincos.f64(double %a) ret { double, double } %result } @@ -692,6 +845,39 @@ define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) { ; IOS-WITH-STRET-NEXT: vst1.32 {d18, d19}, [r6] ; IOS-WITH-STRET-NEXT: add sp, sp, #32 ; IOS-WITH-STRET-NEXT: pop {r4, r5, r6, pc} +; +; WATCHABI-LABEL: test_sincos_v2f64: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push {r7, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 8 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: vpush {d8, d9, d10, d11, d12, d13} +; WATCHABI-NEXT: .cfi_def_cfa_offset 56 +; WATCHABI-NEXT: .cfi_offset d13, -16 +; WATCHABI-NEXT: .cfi_offset d12, -24 +; WATCHABI-NEXT: .cfi_offset d11, -32 +; WATCHABI-NEXT: .cfi_offset d10, -40 +; WATCHABI-NEXT: .cfi_offset d9, -48 +; WATCHABI-NEXT: .cfi_offset d8, -56 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 64 +; WATCHABI-NEXT: vorr q4, q0, q0 +; WATCHABI-NEXT: vorr d0, d9, d9 +; WATCHABI-NEXT: bl ___sincos_stret +; WATCHABI-NEXT: vorr d11, d0, d0 +; WATCHABI-NEXT: vorr d0, d8, d8 +; WATCHABI-NEXT: vorr d13, d1, d1 +; WATCHABI-NEXT: bl ___sincos_stret +; WATCHABI-NEXT: vorr d12, d1, d1 +; WATCHABI-NEXT: vorr d10, d0, d0 +; WATCHABI-NEXT: vorr q1, q6, q6 +; WATCHABI-NEXT: vorr q0, q5, q5 +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: vpop {d8, d9, d10, d11, d12, d13} +; WATCHABI-NEXT: pop {r7, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a) ret { <2 x double>, <2 x double> } %result } @@ -778,6 +964,41 @@ define { fp128, fp128 } @test_sincos_f128(fp128 %a) { ; IOS-NEXT: bl _sinl ; IOS-NEXT: stm r4, {r0, r1, r2, r3} ; IOS-NEXT: pop {r4, r5, r6, r7, r8, pc} +; +; WATCHABI-LABEL: test_sincos_f128: +; WATCHABI: .cfi_startproc +; WATCHABI-NEXT: @ %bb.0: +; WATCHABI-NEXT: push.w {r4, r5, r6, r7, r8, lr} +; WATCHABI-NEXT: .cfi_def_cfa_offset 24 +; WATCHABI-NEXT: .cfi_offset lr, -4 +; WATCHABI-NEXT: .cfi_offset r7, -8 +; WATCHABI-NEXT: .cfi_offset r6, -12 +; WATCHABI-NEXT: .cfi_offset r5, -16 +; WATCHABI-NEXT: .cfi_offset r4, -20 +; WATCHABI-NEXT: .cfi_offset r8, -24 +; WATCHABI-NEXT: sub sp, #8 +; WATCHABI-NEXT: .cfi_def_cfa_offset 32 +; WATCHABI-NEXT: ldr.w r8, [sp, #32] +; WATCHABI-NEXT: mov r4, r0 +; WATCHABI-NEXT: mov r5, r3 +; WATCHABI-NEXT: mov r6, r2 +; WATCHABI-NEXT: mov r7, r1 +; WATCHABI-NEXT: mov r0, r1 +; WATCHABI-NEXT: mov r1, r2 +; WATCHABI-NEXT: mov r2, r3 +; WATCHABI-NEXT: mov r3, r8 +; WATCHABI-NEXT: bl _cosl +; WATCHABI-NEXT: add.w r9, r4, #16 +; WATCHABI-NEXT: stm.w r9, {r0, r1, r2, r3} +; WATCHABI-NEXT: mov r0, r7 +; WATCHABI-NEXT: mov r1, r6 +; WATCHABI-NEXT: mov r2, r5 +; WATCHABI-NEXT: mov r3, r8 +; WATCHABI-NEXT: bl _sinl +; WATCHABI-NEXT: stm r4!, {r0, r1, r2, r3} +; WATCHABI-NEXT: add sp, #8 +; WATCHABI-NEXT: pop.w {r4, r5, r6, r7, r8, pc} +; WATCHABI-NEXT: .cfi_endproc %result = call { fp128, fp128 } @llvm.sincos.f16(fp128 %a) ret { fp128, fp128 } %result } From 70ff2c9a32ec2fa123869be9ca6efdd2f24fca1f Mon Sep 17 00:00:00 2001 From: Min-Yih Hsu Date: Mon, 3 Nov 2025 18:28:33 -0800 Subject: [PATCH 07/11] [doc][RISCV] Add XSfvfexp* and XSfvfexpa* into RISCVUsage.rst (#166198) They were introduced in #164349 --- llvm/docs/RISCVUsage.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/llvm/docs/RISCVUsage.rst b/llvm/docs/RISCVUsage.rst index 49184e3104868..d03f383a92b3b 100644 --- a/llvm/docs/RISCVUsage.rst +++ b/llvm/docs/RISCVUsage.rst @@ -406,6 +406,12 @@ The current vendor extensions supported are: ``XSfvcp`` LLVM implements `version 1.1.0 of the SiFive Vector Coprocessor Interface (VCIX) Software Specification `__ by SiFive. All instructions are prefixed with `sf.vc.` as described in the specification, and the riscv-toolchain-convention document linked above. +``Xsfvfexp16e``, ``Xsfvfbfexp16e``, and ``Xsfvfexp32e`` + LLVM implements `version 0.5 of the Vector Exponential Extension Specification `__ by SiFive. All instructions are prefixed with `sf.` as described in the specification linked above. + +``Xsfvfexpa`` and ``Xsfvfexpa64e`` + LLVM implements `version 0.2 of the Vector Exponential Approximation Extension Specification `__ by SiFive. All instructions are prefixed with `sf.` as described in the specification linked above. + ``XSfvqmaccdod``, ``XSfvqmaccqoq`` LLVM implements `version 1.1.0 of the SiFive Int8 Matrix Multiplication Extensions Specification `__ by SiFive. All instructions are prefixed with `sf.` as described in the specification linked above. From c63cb50080fb9c8a0650234cb711823db306f5c6 Mon Sep 17 00:00:00 2001 From: Jianjian Guan Date: Tue, 4 Nov 2025 10:53:17 +0800 Subject: [PATCH 08/11] [RISCV][GISel] Support select indexed vector load store intrinsics (#165876) --- .../RISCV/GISel/RISCVInstructionSelector.cpp | 125 +- .../RISCV/GlobalISel/rvv/vloxei-rv64.ll | 1341 +++++ .../CodeGen/RISCV/GlobalISel/rvv/vloxei.ll | 5100 +++++++++++++++++ .../RISCV/GlobalISel/rvv/vluxei-rv64.ll | 1341 +++++ .../CodeGen/RISCV/GlobalISel/rvv/vluxei.ll | 5100 +++++++++++++++++ .../RISCV/GlobalISel/rvv/vsoxei-rv64.ll | 1293 +++++ .../CodeGen/RISCV/GlobalISel/rvv/vsoxei.ll | 4881 ++++++++++++++++ .../RISCV/GlobalISel/rvv/vsuxei-rv64.ll | 1310 +++++ .../CodeGen/RISCV/GlobalISel/rvv/vsuxei.ll | 4881 ++++++++++++++++ 9 files changed, 25368 insertions(+), 4 deletions(-) create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei-rv64.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei-rv64.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei-rv64.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei-rv64.ll create mode 100644 llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei.ll diff --git a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp index 282cf5d681685..3d5a55c631301 100644 --- a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp +++ b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp @@ -95,7 +95,8 @@ class RISCVInstructionSelector : public InstructionSelector { void addVectorLoadStoreOperands(MachineInstr &I, SmallVectorImpl &SrcOps, unsigned &CurOp, bool IsMasked, - bool IsStrided) const; + bool IsStridedOrIndexed, + LLT *IndexVT = nullptr) const; bool selectIntrinsicWithSideEffects(MachineInstr &I, MachineIRBuilder &MIB) const; @@ -722,15 +723,17 @@ static unsigned selectRegImmLoadStoreOp(unsigned GenericOpc, unsigned OpSize) { void RISCVInstructionSelector::addVectorLoadStoreOperands( MachineInstr &I, SmallVectorImpl &SrcOps, unsigned &CurOp, - bool IsMasked, bool IsStrided) const { + bool IsMasked, bool IsStridedOrIndexed, LLT *IndexVT) const { // Base Pointer auto PtrReg = I.getOperand(CurOp++).getReg(); SrcOps.push_back(PtrReg); - // Stride - if (IsStrided) { + // Stride or Index + if (IsStridedOrIndexed) { auto StrideReg = I.getOperand(CurOp++).getReg(); SrcOps.push_back(StrideReg); + if (IndexVT) + *IndexVT = MRI->getType(StrideReg); } // Mask @@ -805,6 +808,70 @@ bool RISCVInstructionSelector::selectIntrinsicWithSideEffects( I.eraseFromParent(); return constrainSelectedInstRegOperands(*PseudoMI, TII, TRI, RBI); } + case Intrinsic::riscv_vloxei: + case Intrinsic::riscv_vloxei_mask: + case Intrinsic::riscv_vluxei: + case Intrinsic::riscv_vluxei_mask: { + bool IsMasked = IntrinID == Intrinsic::riscv_vloxei_mask || + IntrinID == Intrinsic::riscv_vluxei_mask; + bool IsOrdered = IntrinID == Intrinsic::riscv_vloxei || + IntrinID == Intrinsic::riscv_vloxei_mask; + LLT VT = MRI->getType(I.getOperand(0).getReg()); + unsigned Log2SEW = Log2_32(VT.getScalarSizeInBits()); + + // Result vector + const Register DstReg = I.getOperand(0).getReg(); + + // Sources + bool HasPassthruOperand = IntrinID != Intrinsic::riscv_vlm; + unsigned CurOp = 2; + SmallVector SrcOps; // Source registers. + + // Passthru + if (HasPassthruOperand) { + auto PassthruReg = I.getOperand(CurOp++).getReg(); + SrcOps.push_back(PassthruReg); + } else { + // Use NoRegister if there is no specified passthru. + SrcOps.push_back(Register()); + } + LLT IndexVT; + addVectorLoadStoreOperands(I, SrcOps, CurOp, IsMasked, true, &IndexVT); + + RISCVVType::VLMUL LMUL = RISCVTargetLowering::getLMUL(getMVTForLLT(VT)); + RISCVVType::VLMUL IndexLMUL = + RISCVTargetLowering::getLMUL(getMVTForLLT(IndexVT)); + unsigned IndexLog2EEW = Log2_32(IndexVT.getScalarSizeInBits()); + if (IndexLog2EEW == 6 && !Subtarget->is64Bit()) { + reportFatalUsageError("The V extension does not support EEW=64 for index " + "values when XLEN=32"); + } + const RISCV::VLX_VSXPseudo *P = RISCV::getVLXPseudo( + IsMasked, IsOrdered, IndexLog2EEW, static_cast(LMUL), + static_cast(IndexLMUL)); + + auto PseudoMI = MIB.buildInstr(P->Pseudo, {DstReg}, SrcOps); + + // Select VL + auto VLOpFn = renderVLOp(I.getOperand(CurOp++)); + for (auto &RenderFn : *VLOpFn) + RenderFn(PseudoMI); + + // SEW + PseudoMI.addImm(Log2SEW); + + // Policy + uint64_t Policy = RISCVVType::MASK_AGNOSTIC; + if (IsMasked) + Policy = I.getOperand(CurOp++).getImm(); + PseudoMI.addImm(Policy); + + // Memref + PseudoMI.cloneMemRefs(I); + + I.eraseFromParent(); + return constrainSelectedInstRegOperands(*PseudoMI, TII, TRI, RBI); + } case Intrinsic::riscv_vsm: case Intrinsic::riscv_vse: case Intrinsic::riscv_vse_mask: @@ -847,6 +914,56 @@ bool RISCVInstructionSelector::selectIntrinsicWithSideEffects( I.eraseFromParent(); return constrainSelectedInstRegOperands(*PseudoMI, TII, TRI, RBI); } + case Intrinsic::riscv_vsoxei: + case Intrinsic::riscv_vsoxei_mask: + case Intrinsic::riscv_vsuxei: + case Intrinsic::riscv_vsuxei_mask: { + bool IsMasked = IntrinID == Intrinsic::riscv_vsoxei_mask || + IntrinID == Intrinsic::riscv_vsuxei_mask; + bool IsOrdered = IntrinID == Intrinsic::riscv_vsoxei || + IntrinID == Intrinsic::riscv_vsoxei_mask; + LLT VT = MRI->getType(I.getOperand(1).getReg()); + unsigned Log2SEW = Log2_32(VT.getScalarSizeInBits()); + + // Sources + unsigned CurOp = 1; + SmallVector SrcOps; // Source registers. + + // Store value + auto PassthruReg = I.getOperand(CurOp++).getReg(); + SrcOps.push_back(PassthruReg); + + LLT IndexVT; + addVectorLoadStoreOperands(I, SrcOps, CurOp, IsMasked, true, &IndexVT); + + RISCVVType::VLMUL LMUL = RISCVTargetLowering::getLMUL(getMVTForLLT(VT)); + RISCVVType::VLMUL IndexLMUL = + RISCVTargetLowering::getLMUL(getMVTForLLT(IndexVT)); + unsigned IndexLog2EEW = Log2_32(IndexVT.getScalarSizeInBits()); + if (IndexLog2EEW == 6 && !Subtarget->is64Bit()) { + reportFatalUsageError("The V extension does not support EEW=64 for index " + "values when XLEN=32"); + } + const RISCV::VLX_VSXPseudo *P = RISCV::getVSXPseudo( + IsMasked, IsOrdered, IndexLog2EEW, static_cast(LMUL), + static_cast(IndexLMUL)); + + auto PseudoMI = MIB.buildInstr(P->Pseudo, {}, SrcOps); + + // Select VL + auto VLOpFn = renderVLOp(I.getOperand(CurOp++)); + for (auto &RenderFn : *VLOpFn) + RenderFn(PseudoMI); + + // SEW + PseudoMI.addImm(Log2SEW); + + // Memref + PseudoMI.cloneMemRefs(I); + + I.eraseFromParent(); + return constrainSelectedInstRegOperands(*PseudoMI, TII, TRI, RBI); + } } } diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei-rv64.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei-rv64.ll new file mode 100644 index 0000000000000..5cb55f15c7c8c --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei-rv64.ll @@ -0,0 +1,1341 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin -global-isel -verify-machineinstrs \ +; RUN: < %s | FileCheck %s + +; The intrinsics are not supported with RV32. + +declare @llvm.riscv.vloxei.nxv1i8.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vloxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i8.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i8.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i8.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vloxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i8.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i8.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i8.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vloxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i8.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i8.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i8.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vloxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i8.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i8.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i16.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i16.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i16.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i16.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i16.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i16.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i16.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i16.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i16.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i16.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i16.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i16.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i32.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i32.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i32.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i32.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i32.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i32.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i32.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i32.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i32.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i32.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i32.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i32.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i64.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i64.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i64.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i64.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i64.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i64.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i64.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i64.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i64.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i64.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i64.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i64.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f16.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f16.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f16.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f16.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f16.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f16.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f16.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f16.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f16.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f16.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f16.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f16.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f32.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f32.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f32.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f32.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f32.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f32.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f32.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f32.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f32.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f32.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f32.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f32.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f64.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f64.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f64.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f64.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f64.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f64.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f64.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f64.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f64.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f64.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f64.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f64.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei.ll new file mode 100644 index 0000000000000..fafd45b7579e8 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vloxei.ll @@ -0,0 +1,5100 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=ilp32d | FileCheck %s +; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=lp64d | FileCheck %s + +declare @llvm.riscv.vloxei.nxv1i8.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i8.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i8.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i8.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i8.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i8.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i8.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vloxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i8.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i8.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i8.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vloxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i8.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i8.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i8.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vloxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i8.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i8.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i16.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i16.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i16.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i16.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i16.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i16.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i16.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i16.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i16.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i16.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i16.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i16.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i16.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i16.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i16.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i32.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i32.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i32.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i32.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i32.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i32.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i32.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i32.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i32.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i32.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i32.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i32.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i32.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i32.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i32.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i64.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i64.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i64.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i64.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i64.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i64.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i64.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i64.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i64.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i64.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i64.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i64.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f16.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f16.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f16.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f16.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f16.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f16.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f16.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f16.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f16.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f16.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f16.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f16.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f16.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f16.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f16.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f32.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f32.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f32.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f32.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f32.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f32.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f32.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f32.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f32.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f32.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f32.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f32.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f32.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f32.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f32.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f64.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f64.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f64.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f64.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f64.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f64.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f64.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f64.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f64.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f64.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f64.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f64.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i8.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i8.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i8.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i8.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i8.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i8.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i8.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i8.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i8.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i8.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vloxei16.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i8.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i8.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i8.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vloxei16.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i8.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i8.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32i8.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32i8_nxv32i8_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vloxei16.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32i8.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32i8.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i16.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i16.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i16.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i16.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i16.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i16.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i16.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i16.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i16.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i16.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i16.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i16.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i16.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i16.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i16.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32i16.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32i16_nxv32i16_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32i16.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32i16.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i32.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i32.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i32.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i32.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i32.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i32.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i32.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i32.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i32.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i32.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i32.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i32.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i32.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i32.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i32.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i64.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i64.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i64.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i64.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i64.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i64.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i64.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i64.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i64.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i64.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i64.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i64.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f16.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f16.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f16.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f16.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f16.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f16.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f16.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f16.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f16.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f16.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f16.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f16.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f16.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f16.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f16.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32f16.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32f16_nxv32f16_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32f16.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32f16.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f32.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f32.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f32.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f32.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f32.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f32.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f32.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f32.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f32.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f32.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f32.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f32.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f32.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f32.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f32.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f64.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f64.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f64.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f64.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f64.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f64.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f64.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f64.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f64.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f64.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f64.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f64.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i8.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i8.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i8.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i8.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i8.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i8.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i8.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i8.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i8.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i8.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i8.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i8.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i8.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i8.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i8.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32i8.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32i8_nxv32i8_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32i8.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32i8.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv64i8.nxv64i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv64i8_nxv64i8_nxv64i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv64i8.nxv64i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv64i8.nxv64i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i16.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i16.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i16.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i16.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i16.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i16.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i16.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i16.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i16.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i16.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i16.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i16.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i16.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i16.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i16.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32i16.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32i16_nxv32i16_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32i16.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32i16.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i32.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i32.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i32.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i32.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i32.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i32.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i32.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i32.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i32.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i32.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i32.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i32.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16i32.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16i32.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16i32.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1i64.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1i64.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1i64.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2i64.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2i64.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2i64.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4i64.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4i64.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4i64.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8i64.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8i64.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8i64.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f16.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f16.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f16.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f16.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f16.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f16.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f16.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f16.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f16.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f16.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f16.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f16.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f16.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f16.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f16.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv32f16.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv32f16_nxv32f16_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv32f16.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv32f16.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f32.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f32.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f32.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f32.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f32.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f32.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f32.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f32.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f32.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f32.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f32.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f32.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv16f32.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv16f32.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv16f32.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv1f64.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vloxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv1f64.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv1f64.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv2f64.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv2f64.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv2f64.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv4f64.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv4f64.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv4f64.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vloxei.nxv8f64.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vloxei_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vloxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.nxv8f64.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vloxei.mask.nxv8f64.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vloxei_mask_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vloxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vloxei.mask.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei-rv64.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei-rv64.ll new file mode 100644 index 0000000000000..916af2556c6a8 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei-rv64.ll @@ -0,0 +1,1341 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin -global-isel -verify-machineinstrs \ +; RUN: < %s | FileCheck %s + +; The intrinsics are not supported with RV32. + +declare @llvm.riscv.vluxei.nxv1i8.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vluxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i8.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i8.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i8.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vluxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i8.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i8.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i8.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vluxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i8.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i8.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i8.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vluxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i8.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i8.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i16.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i16.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i16.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i16.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i16.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i16.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i16.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i16.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i16.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i16.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i16.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i16.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i32.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i32.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i32.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i32.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i32.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i32.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i32.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i32.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i32.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i32.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i32.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i32.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i64.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i64.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i64.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i64.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i64.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i64.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i64.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i64.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i64.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i64.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i64.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i64.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f16.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f16.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f16.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f16.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f16.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f16.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f16.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f16.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f16.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f16.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f16.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f16.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f32.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei64.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f32.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f32.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f32.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei64.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f32.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f32.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f32.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei64.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f32.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f32.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f32.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei64.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f32.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f32.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f64.nxv1i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f64.nxv1i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f64.nxv1i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f64.nxv2i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f64.nxv2i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f64.nxv2i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f64.nxv4i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f64.nxv4i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f64.nxv4i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f64.nxv8i64( + , + ptr, + , + i64); + +define @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i64(ptr %0, %1, i64 %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei64.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f64.nxv8i64( + poison, + ptr %0, + %1, + i64 %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f64.nxv8i64( + , + ptr, + , + , + i64, + i64); + +define @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4, i64 1) + + ret %a +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei.ll new file mode 100644 index 0000000000000..8dd32a1d640dc --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vluxei.ll @@ -0,0 +1,5100 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=ilp32d | FileCheck %s +; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=lp64d | FileCheck %s + +declare @llvm.riscv.vluxei.nxv1i8.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i8.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i8.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i8.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i8.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i8.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i8.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vluxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i8.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i8.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i8.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vluxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i8.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i8.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i8.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vluxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i8.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i8.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i16.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i16.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i16.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i16.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i16.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i16.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i16.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i16.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i16.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i16.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i16.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i16.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i16.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i16.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i16.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i32.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i32.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i32.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i32.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i32.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i32.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i32.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i32.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i32.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i32.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i32.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i32.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i32.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i32.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i32.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i64.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i64.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i64.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i64.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i64.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i64.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i64.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i64.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i64.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i64.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i64.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i64.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f16.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f16.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f16.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f16.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f16.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f16.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f16.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei32.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f16.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f16.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f16.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei32.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f16.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f16.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f16.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei32.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f16.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f16.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f32.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f32.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f32.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f32.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f32.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f32.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f32.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f32.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f32.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f32.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f32.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f32.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f32.nxv16i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f32.nxv16i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f32.nxv16i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f64.nxv1i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei32.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f64.nxv1i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f64.nxv1i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f64.nxv2i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f64.nxv2i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f64.nxv2i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f64.nxv4i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f64.nxv4i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f64.nxv4i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f64.nxv8i32( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i32(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f64.nxv8i32( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f64.nxv8i32( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i8.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i8.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i8.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i8.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i8.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i8.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i8.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i8.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i8.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i8.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vluxei16.v v10, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i8.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i8.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i8.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vluxei16.v v12, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i8.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i8.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32i8.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vluxei16.v v16, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32i8.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32i8.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i16.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i16.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i16.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i16.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i16.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i16.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i16.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i16.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i16.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i16.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i16.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i16.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i16.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i16.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i16.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32i16.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32i16.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32i16.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i32.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i32.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i32.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i32.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i32.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i32.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i32.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i32.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i32.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i32.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i32.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i32.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i32.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i32.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i32.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i64.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i64.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i64.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i64.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i64.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i64.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i64.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i64.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i64.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i64.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i64.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i64.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f16.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f16.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f16.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f16.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f16.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f16.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f16.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f16.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f16.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f16.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f16.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f16.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f16.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f16.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f16.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32f16.nxv32i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32f16.nxv32i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32f16.nxv32i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f32.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f32.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f32.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f32.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f32.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f32.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f32.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f32.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f32.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f32.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f32.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f32.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f32.nxv16i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f32.nxv16i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f32.nxv16i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f64.nxv1i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei16.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f64.nxv1i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f64.nxv1i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f64.nxv2i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f64.nxv2i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f64.nxv2i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f64.nxv4i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f64.nxv4i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f64.nxv4i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f64.nxv8i16( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i16(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f64.nxv8i16( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f64.nxv8i16( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i8.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i8.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i8.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i8.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i8.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i8.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i8.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i8.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i8.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i8.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i8.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i8.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i8.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i8.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i8.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32i8.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32i8.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32i8.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv64i8.nxv64i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv64i8_nxv64i8_nxv64i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v8 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv64i8.nxv64i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv64i8.nxv64i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i16.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i16.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i16.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i16.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i16.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i16.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i16.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i16.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i16.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i16.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i16.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i16.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i16.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i16.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i16.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32i16.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32i16.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32i16.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i32.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i32.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i32.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i32.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i32.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i32.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i32.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i32.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i32.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i32.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i32.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i32.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16i32.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16i32.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16i32.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1i64.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1i64.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1i64.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2i64.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2i64.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2i64.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4i64.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4i64.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4i64.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8i64.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8i64.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8i64.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f16.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f16.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f16.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f16.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f16.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f16.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f16.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f16.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f16.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f16.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f16.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f16.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f16.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f16.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f16.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv32f16.nxv32i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv4r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv32f16.nxv32i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv32f16.nxv32i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f32.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv1r.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f32.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f32.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f32.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f32.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f32.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f32.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f32.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f32.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f32.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f32.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f32.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv16f32.nxv16i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv2r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv16f32.nxv16i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv16f32.nxv16i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv1f64.nxv1i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vluxei8.v v9, (a0), v8 +; CHECK-NEXT: vmv.v.v v8, v9 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv1f64.nxv1i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv1f64.nxv1i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv2f64.nxv2i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v10, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv2f64.nxv2i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv2f64.nxv2i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv4f64.nxv4i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v12, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv4f64.nxv4i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv4f64.nxv4i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} + +declare @llvm.riscv.vluxei.nxv8f64.nxv8i8( + , + ptr, + , + iXLen); + +define @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i8(ptr %0, %1, iXLen %2) nounwind { +; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma +; CHECK-NEXT: vmv1r.v v16, v8 +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vluxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.nxv8f64.nxv8i8( + poison, + ptr %0, + %1, + iXLen %2) + + ret %a +} + +declare @llvm.riscv.vluxei.mask.nxv8f64.nxv8i8( + , + ptr, + , + , + iXLen, + iXLen); + +define @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu +; CHECK-NEXT: vluxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + %a = call @llvm.riscv.vluxei.mask.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4, iXLen 1) + + ret %a +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei-rv64.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei-rv64.ll new file mode 100644 index 0000000000000..4963d91a14988 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei-rv64.ll @@ -0,0 +1,1293 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin -global-isel -verify-machineinstrs \ +; RUN: < %s | FileCheck %s + +; The intrinsics are not supported with RV32. + +declare void @llvm.riscv.vsoxei.nxv1i8.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i8.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i8.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i8.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i16.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i16.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i16.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i16.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i32.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i32.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i32.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i32.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i64.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i64.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i64.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i64.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f16.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f16.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f16.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f16.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f32.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f32.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f32.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f32.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f64.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f64.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f64.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f64.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei.ll new file mode 100644 index 0000000000000..7ea2e1734e5a2 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsoxei.ll @@ -0,0 +1,4881 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=ilp32d | FileCheck %s +; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=lp64d | FileCheck %s + +declare void @llvm.riscv.vsoxei.nxv1i8.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i8.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i8.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i8.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i8.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i16.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i16.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i16.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i16.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i16.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i32.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i32.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i32.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i32.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i32.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i64.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i64.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i64.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i64.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f16.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f16.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f16.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f16.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f16.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f32.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f32.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f32.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f32.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f32.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f64.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f64.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f64.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f64.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i8.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i8.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i8.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i8.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i8.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32i8.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32i8.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i16.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i16.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i16.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i16.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i16.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32i16.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32i16.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i32.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i32.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i32.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i32.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i32.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i64.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i64.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i64.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i64.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f16.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f16.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f16.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f16.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f16.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32f16.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32f16.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f32.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f32.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f32.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f32.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f32.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f64.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f64.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f64.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f64.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i8.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i8.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i8.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i8.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i8.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32i8.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32i8.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv64i8.nxv64i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv64i8.nxv64i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i16.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i16.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i16.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i16.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i16.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32i16.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32i16.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i32.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i32.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i32.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i32.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16i32.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1i64.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2i64.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4i64.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8i64.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f16.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f16.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f16.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f16.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f16.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv32f16.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv32f16.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f32.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f32.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f32.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f32.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv16f32.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv1f64.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv2f64.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv4f64.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsoxei.nxv8f64.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsoxei_mask_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsoxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsoxei.mask.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei-rv64.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei-rv64.ll new file mode 100644 index 0000000000000..9bd272a368d20 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei-rv64.ll @@ -0,0 +1,1310 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+zvfbfmin -global-isel -verify-machineinstrs \ +; RUN: < %s | FileCheck %s + +; The intrinsics are not supported with RV32. + +declare void @llvm.riscv.vsuxei.nxv1i8.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +define void @intrinsic_vsuxei_allonesmask_v_nxv1i8_nxv1i8_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_allonesmask_v_nxv1i8_nxv1i8_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i64( + %0, + ptr %1, + %2, + splat (i1 true), + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i8.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i8.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i8.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i16.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i16.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i16.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i16.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i32.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i32.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i32.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i32.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i64.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i64.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i64.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i64.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f16.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f16.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f16.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f16.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f32.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f32.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f32.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f32.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f64.nxv1i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f64.nxv2i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f64.nxv4i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f64.nxv8i64( + , + ptr, + , + i64); + +define void @intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, i64 %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + i64 %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i64( + , + ptr, + , + , + i64); + +define void @intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i64( %0, ptr %1, %2, %3, i64 %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i64: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei64.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i64( + %0, + ptr %1, + %2, + %3, + i64 %4) + + ret void +} diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei.ll b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei.ll new file mode 100644 index 0000000000000..7cd15454d40b9 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/rvv/vsuxei.ll @@ -0,0 +1,4881 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=ilp32d | FileCheck %s +; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfhmin,+zvfbfmin \ +; RUN: -global-isel -verify-machineinstrs -target-abi=lp64d | FileCheck %s + +declare void @llvm.riscv.vsuxei.nxv1i8.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i8.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i8.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i8.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i8.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i16.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i16.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i16.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i16.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i16.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i32.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i32.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i32.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i32.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i32.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i64.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i64.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i64.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i64.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f16.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f16.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f16.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f16.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f16.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f32.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f32.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f32.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f32.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f32.nxv16i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f64.nxv1i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f64.nxv2i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f64.nxv4i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f64.nxv8i32( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i32( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i32( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i32: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei32.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i32( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i8.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i8.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i8.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i8.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i8.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32i8.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32i8.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32i8_nxv32i8_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32i8_nxv32i8_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32i8.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i16.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i16.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i16.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i16.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i16.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32i16.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32i16.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32i16_nxv32i16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32i16_nxv32i16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32i16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i32.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i32.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i32.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i32.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i32.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i64.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i64.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i64.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i64.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f16.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f16.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f16.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f16.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f16.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32f16.nxv32i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32f16.nxv32i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32f16_nxv32f16_nxv32i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32f16_nxv32f16_nxv32i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32f16.nxv32i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f32.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f32.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f32.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f32.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f32.nxv16i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f64.nxv1i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f64.nxv2i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f64.nxv4i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f64.nxv8i16( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i16( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i16( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i16: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei16.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i16( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i8.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i8_nxv1i8_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i8.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i8.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i8_nxv2i8_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i8.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i8.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i8_nxv4i8_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i8.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i8.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i8_nxv8i8_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i8.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i8.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i8_nxv16i8_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i8.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32i8.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32i8.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32i8_nxv32i8_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32i8_nxv32i8_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32i8.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv64i8.nxv64i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv64i8.nxv64i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv64i8_nxv64i8_nxv64i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv64i8_nxv64i8_nxv64i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv64i8.nxv64i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i16.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i16_nxv1i16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i16.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i16_nxv2i16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i16.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i16_nxv4i16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i16.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i16_nxv8i16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i16.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i16_nxv16i16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32i16.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32i16.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32i16_nxv32i16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32i16_nxv32i16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32i16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i32.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i32_nxv1i32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i32.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i32_nxv2i32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i32.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i32_nxv4i32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i32.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i32_nxv8i32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16i32.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16i32_nxv16i32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16i32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1i64.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1i64_nxv1i64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1i64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2i64.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2i64_nxv2i64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2i64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4i64.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4i64_nxv4i64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4i64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8i64.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8i64_nxv8i64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8i64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f16.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f16_nxv1f16_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f16.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f16.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f16_nxv2f16_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f16.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f16.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f16_nxv4f16_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f16.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f16.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f16_nxv8f16_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f16.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f16.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f16_nxv16f16_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f16.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv32f16.nxv32i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv32f16.nxv32i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv32f16_nxv32f16_nxv32i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv32f16_nxv32f16_nxv32i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv32f16.nxv32i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f32.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f32_nxv1f32_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f32.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f32.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f32_nxv2f32_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f32.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f32.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f32_nxv4f32_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f32.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f32.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f32_nxv8f32_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f32.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv16f32.nxv16i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv16f32_nxv16f32_nxv16i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv16f32.nxv16i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv1f64.nxv1i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv1f64_nxv1f64_nxv1i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v9, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv1f64.nxv1i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv2f64.nxv2i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv2f64_nxv2f64_nxv2i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v10, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv2f64.nxv2i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv4f64.nxv4i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv4f64_nxv4f64_nxv4i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v12, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv4f64.nxv4i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} + +declare void @llvm.riscv.vsuxei.nxv8f64.nxv8i8( + , + ptr, + , + iXLen); + +define void @intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, iXLen %3) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16 +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + iXLen %3) + + ret void +} + +declare void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i8( + , + ptr, + , + , + iXLen); + +define void @intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i8( %0, ptr %1, %2, %3, iXLen %4) nounwind { +; CHECK-LABEL: intrinsic_vsuxei_mask_v_nxv8f64_nxv8f64_nxv8i8: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma +; CHECK-NEXT: vsuxei8.v v8, (a0), v16, v0.t +; CHECK-NEXT: ret +entry: + call void @llvm.riscv.vsuxei.mask.nxv8f64.nxv8i8( + %0, + ptr %1, + %2, + %3, + iXLen %4) + + ret void +} From d470bfe0d46480ebf7f4a2e1dd37005894acb298 Mon Sep 17 00:00:00 2001 From: camc <69519329+camc@users.noreply.github.com> Date: Tue, 4 Nov 2025 03:12:27 +0000 Subject: [PATCH 09/11] [clang] Mark labels referenced when used in named break or continue (#166033) Fixes #166013 Marks labels that appear in a c2y named break or continue statement as referenced to fix false-positive unused diagnostics. --------- Co-authored-by: camc --- clang/docs/ReleaseNotes.rst | 2 ++ clang/lib/Sema/SemaStmt.cpp | 3 +++ clang/test/Sema/labeled-break-continue.c | 18 +++++++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 2c575cd1d4289..2e2c5198fa8f5 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -395,6 +395,8 @@ Improvements to Clang's diagnostics that were previously incorrectly accepted in case of other irrelevant conditions are now consistently diagnosed, identical to C++ mode. +- Fix false-positive unused label diagnostic when a label is used in a named break + or continue (#GH166013) - Clang now emits a diagnostic in case `vector_size` or `ext_vector_type` attributes are used with a negative size (#GH165463). diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index f39896336053e..5b3ef1adf38e3 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -3281,6 +3281,9 @@ static Scope *FindLabeledBreakContinueScope(Sema &S, Scope *CurScope, SourceLocation LabelLoc, bool IsContinue) { assert(Target && "not a named break/continue?"); + + Target->markUsed(S.Context); + Scope *Found = nullptr; for (Scope *Scope = CurScope; Scope; Scope = Scope->getParent()) { if (Scope->isFunctionScope()) diff --git a/clang/test/Sema/labeled-break-continue.c b/clang/test/Sema/labeled-break-continue.c index 78f81c484c3d5..6b4adc23dca8d 100644 --- a/clang/test/Sema/labeled-break-continue.c +++ b/clang/test/Sema/labeled-break-continue.c @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 -std=c2y -verify -fsyntax-only -fblocks %s -// RUN: %clang_cc1 -std=c23 -verify -fsyntax-only -fblocks -fnamed-loops %s -// RUN: %clang_cc1 -x c++ -verify -fsyntax-only -fblocks -fnamed-loops %s +// RUN: %clang_cc1 -std=c2y -verify -Wunused -fsyntax-only -fblocks %s +// RUN: %clang_cc1 -std=c23 -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s +// RUN: %clang_cc1 -x c++ -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s void f1() { l1: while (true) { @@ -159,3 +159,15 @@ void f7() { continue d; // expected-error {{'continue' label does not name an enclosing loop}} } } + +void f8() { + l1: // no-warning + while (true) { + break l1; + } + + l2: // no-warning + while (true) { + continue l2; + } +} From 2b45efe92013e1372a2d49f550dd226ff351c594 Mon Sep 17 00:00:00 2001 From: choikwa <5455710+choikwa@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:21:26 -0500 Subject: [PATCH 10/11] [AMDGPU] NFC, move testcase, only test output of promote-alloca with vector-combine (#166289) --- .../extract-insert-chain-to-shuffles.ll | 567 ++++++++++++++++++ 1 file changed, 567 insertions(+) create mode 100644 llvm/test/Transforms/VectorCombine/AMDGPU/extract-insert-chain-to-shuffles.ll diff --git a/llvm/test/Transforms/VectorCombine/AMDGPU/extract-insert-chain-to-shuffles.ll b/llvm/test/Transforms/VectorCombine/AMDGPU/extract-insert-chain-to-shuffles.ll new file mode 100644 index 0000000000000..4b551fad5b43a --- /dev/null +++ b/llvm/test/Transforms/VectorCombine/AMDGPU/extract-insert-chain-to-shuffles.ll @@ -0,0 +1,567 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 +; RUN: opt -S -mtriple=amdgcn-- -mcpu=gfx1100 -passes=vector-combine < %s | FileCheck -check-prefix=OPT %s + +; Generated from amdgpu-promote-alloca on array of vectors +; VectorCombiner should recognize chain of extract-insert vectors +; and turn them into one or two shuffles +define amdgpu_kernel void @extract_insert_chain_to_shuffles(<16 x i8> %in, <16 x i8> %add, ptr addrspace(3) %out) #0 { +; OPT-LABEL: define amdgpu_kernel void @extract_insert_chain_to_shuffles( +; OPT-SAME: <16 x i8> [[IN:%.*]], <16 x i8> [[ADD:%.*]], ptr addrspace(3) [[OUT:%.*]]) #[[ATTR0:[0-9]+]] { +; OPT-NEXT: [[ENTRY:.*:]] +; OPT-NEXT: [[ALLOCA:%.*]] = freeze <128 x i8> poison +; OPT-NEXT: [[TMP0:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP1:%.*]] = shufflevector <128 x i8> [[ALLOCA]], <128 x i8> [[TMP0]], <128 x i32> +; OPT-NEXT: [[TMP2:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP3:%.*]] = insertelement <128 x i8> [[TMP1]], i8 [[TMP2]], i32 1 +; OPT-NEXT: [[TMP4:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP5:%.*]] = insertelement <128 x i8> [[TMP3]], i8 [[TMP4]], i32 2 +; OPT-NEXT: [[TMP6:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP7:%.*]] = insertelement <128 x i8> [[TMP5]], i8 [[TMP6]], i32 3 +; OPT-NEXT: [[TMP8:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP9:%.*]] = insertelement <128 x i8> [[TMP7]], i8 [[TMP8]], i32 4 +; OPT-NEXT: [[TMP10:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP11:%.*]] = insertelement <128 x i8> [[TMP9]], i8 [[TMP10]], i32 5 +; OPT-NEXT: [[TMP12:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP13:%.*]] = insertelement <128 x i8> [[TMP11]], i8 [[TMP12]], i32 6 +; OPT-NEXT: [[TMP14:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP15:%.*]] = insertelement <128 x i8> [[TMP13]], i8 [[TMP14]], i32 7 +; OPT-NEXT: [[TMP16:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP17:%.*]] = insertelement <128 x i8> [[TMP15]], i8 [[TMP16]], i32 8 +; OPT-NEXT: [[TMP18:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP19:%.*]] = insertelement <128 x i8> [[TMP17]], i8 [[TMP18]], i32 9 +; OPT-NEXT: [[TMP20:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP21:%.*]] = insertelement <128 x i8> [[TMP19]], i8 [[TMP20]], i32 10 +; OPT-NEXT: [[TMP22:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP23:%.*]] = insertelement <128 x i8> [[TMP21]], i8 [[TMP22]], i32 11 +; OPT-NEXT: [[TMP24:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP25:%.*]] = insertelement <128 x i8> [[TMP23]], i8 [[TMP24]], i32 12 +; OPT-NEXT: [[TMP26:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP27:%.*]] = insertelement <128 x i8> [[TMP25]], i8 [[TMP26]], i32 13 +; OPT-NEXT: [[TMP28:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP29:%.*]] = insertelement <128 x i8> [[TMP27]], i8 [[TMP28]], i32 14 +; OPT-NEXT: [[TMP30:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP31:%.*]] = insertelement <128 x i8> [[TMP29]], i8 [[TMP30]], i32 15 +; OPT-NEXT: [[TMP32:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP33:%.*]] = shufflevector <128 x i8> [[TMP31]], <128 x i8> [[TMP32]], <128 x i32> +; OPT-NEXT: [[TMP34:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP35:%.*]] = insertelement <128 x i8> [[TMP33]], i8 [[TMP34]], i32 17 +; OPT-NEXT: [[TMP36:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP37:%.*]] = insertelement <128 x i8> [[TMP35]], i8 [[TMP36]], i32 18 +; OPT-NEXT: [[TMP38:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP39:%.*]] = insertelement <128 x i8> [[TMP37]], i8 [[TMP38]], i32 19 +; OPT-NEXT: [[TMP40:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP41:%.*]] = insertelement <128 x i8> [[TMP39]], i8 [[TMP40]], i32 20 +; OPT-NEXT: [[TMP42:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP43:%.*]] = insertelement <128 x i8> [[TMP41]], i8 [[TMP42]], i32 21 +; OPT-NEXT: [[TMP44:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP45:%.*]] = insertelement <128 x i8> [[TMP43]], i8 [[TMP44]], i32 22 +; OPT-NEXT: [[TMP46:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP47:%.*]] = insertelement <128 x i8> [[TMP45]], i8 [[TMP46]], i32 23 +; OPT-NEXT: [[TMP48:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP49:%.*]] = insertelement <128 x i8> [[TMP47]], i8 [[TMP48]], i32 24 +; OPT-NEXT: [[TMP50:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP51:%.*]] = insertelement <128 x i8> [[TMP49]], i8 [[TMP50]], i32 25 +; OPT-NEXT: [[TMP52:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP53:%.*]] = insertelement <128 x i8> [[TMP51]], i8 [[TMP52]], i32 26 +; OPT-NEXT: [[TMP54:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP55:%.*]] = insertelement <128 x i8> [[TMP53]], i8 [[TMP54]], i32 27 +; OPT-NEXT: [[TMP56:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP57:%.*]] = insertelement <128 x i8> [[TMP55]], i8 [[TMP56]], i32 28 +; OPT-NEXT: [[TMP58:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP59:%.*]] = insertelement <128 x i8> [[TMP57]], i8 [[TMP58]], i32 29 +; OPT-NEXT: [[TMP60:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP61:%.*]] = insertelement <128 x i8> [[TMP59]], i8 [[TMP60]], i32 30 +; OPT-NEXT: [[TMP62:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP63:%.*]] = insertelement <128 x i8> [[TMP61]], i8 [[TMP62]], i32 31 +; OPT-NEXT: [[TMP64:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP65:%.*]] = shufflevector <128 x i8> [[TMP63]], <128 x i8> [[TMP64]], <128 x i32> +; OPT-NEXT: [[TMP66:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP67:%.*]] = insertelement <128 x i8> [[TMP65]], i8 [[TMP66]], i32 33 +; OPT-NEXT: [[TMP68:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP69:%.*]] = insertelement <128 x i8> [[TMP67]], i8 [[TMP68]], i32 34 +; OPT-NEXT: [[TMP70:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP71:%.*]] = insertelement <128 x i8> [[TMP69]], i8 [[TMP70]], i32 35 +; OPT-NEXT: [[TMP72:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP73:%.*]] = insertelement <128 x i8> [[TMP71]], i8 [[TMP72]], i32 36 +; OPT-NEXT: [[TMP74:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP75:%.*]] = insertelement <128 x i8> [[TMP73]], i8 [[TMP74]], i32 37 +; OPT-NEXT: [[TMP76:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP77:%.*]] = insertelement <128 x i8> [[TMP75]], i8 [[TMP76]], i32 38 +; OPT-NEXT: [[TMP78:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP79:%.*]] = insertelement <128 x i8> [[TMP77]], i8 [[TMP78]], i32 39 +; OPT-NEXT: [[TMP80:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP81:%.*]] = insertelement <128 x i8> [[TMP79]], i8 [[TMP80]], i32 40 +; OPT-NEXT: [[TMP82:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP83:%.*]] = insertelement <128 x i8> [[TMP81]], i8 [[TMP82]], i32 41 +; OPT-NEXT: [[TMP84:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP85:%.*]] = insertelement <128 x i8> [[TMP83]], i8 [[TMP84]], i32 42 +; OPT-NEXT: [[TMP86:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP87:%.*]] = insertelement <128 x i8> [[TMP85]], i8 [[TMP86]], i32 43 +; OPT-NEXT: [[TMP88:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP89:%.*]] = insertelement <128 x i8> [[TMP87]], i8 [[TMP88]], i32 44 +; OPT-NEXT: [[TMP90:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP91:%.*]] = insertelement <128 x i8> [[TMP89]], i8 [[TMP90]], i32 45 +; OPT-NEXT: [[TMP92:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP93:%.*]] = insertelement <128 x i8> [[TMP91]], i8 [[TMP92]], i32 46 +; OPT-NEXT: [[TMP94:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP95:%.*]] = insertelement <128 x i8> [[TMP93]], i8 [[TMP94]], i32 47 +; OPT-NEXT: [[TMP96:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP97:%.*]] = shufflevector <128 x i8> [[TMP95]], <128 x i8> [[TMP96]], <128 x i32> +; OPT-NEXT: [[TMP98:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP99:%.*]] = insertelement <128 x i8> [[TMP97]], i8 [[TMP98]], i32 49 +; OPT-NEXT: [[TMP100:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP101:%.*]] = insertelement <128 x i8> [[TMP99]], i8 [[TMP100]], i32 50 +; OPT-NEXT: [[TMP102:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP103:%.*]] = insertelement <128 x i8> [[TMP101]], i8 [[TMP102]], i32 51 +; OPT-NEXT: [[TMP104:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP105:%.*]] = insertelement <128 x i8> [[TMP103]], i8 [[TMP104]], i32 52 +; OPT-NEXT: [[TMP106:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP107:%.*]] = insertelement <128 x i8> [[TMP105]], i8 [[TMP106]], i32 53 +; OPT-NEXT: [[TMP108:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP109:%.*]] = insertelement <128 x i8> [[TMP107]], i8 [[TMP108]], i32 54 +; OPT-NEXT: [[TMP110:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP111:%.*]] = insertelement <128 x i8> [[TMP109]], i8 [[TMP110]], i32 55 +; OPT-NEXT: [[TMP112:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP113:%.*]] = insertelement <128 x i8> [[TMP111]], i8 [[TMP112]], i32 56 +; OPT-NEXT: [[TMP114:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP115:%.*]] = insertelement <128 x i8> [[TMP113]], i8 [[TMP114]], i32 57 +; OPT-NEXT: [[TMP116:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP117:%.*]] = insertelement <128 x i8> [[TMP115]], i8 [[TMP116]], i32 58 +; OPT-NEXT: [[TMP118:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP119:%.*]] = insertelement <128 x i8> [[TMP117]], i8 [[TMP118]], i32 59 +; OPT-NEXT: [[TMP120:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP121:%.*]] = insertelement <128 x i8> [[TMP119]], i8 [[TMP120]], i32 60 +; OPT-NEXT: [[TMP122:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP123:%.*]] = insertelement <128 x i8> [[TMP121]], i8 [[TMP122]], i32 61 +; OPT-NEXT: [[TMP124:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP125:%.*]] = insertelement <128 x i8> [[TMP123]], i8 [[TMP124]], i32 62 +; OPT-NEXT: [[TMP126:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP127:%.*]] = insertelement <128 x i8> [[TMP125]], i8 [[TMP126]], i32 63 +; OPT-NEXT: [[TMP128:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP129:%.*]] = shufflevector <128 x i8> [[TMP127]], <128 x i8> [[TMP128]], <128 x i32> +; OPT-NEXT: [[TMP130:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP131:%.*]] = insertelement <128 x i8> [[TMP129]], i8 [[TMP130]], i32 65 +; OPT-NEXT: [[TMP132:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP133:%.*]] = insertelement <128 x i8> [[TMP131]], i8 [[TMP132]], i32 66 +; OPT-NEXT: [[TMP134:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP135:%.*]] = insertelement <128 x i8> [[TMP133]], i8 [[TMP134]], i32 67 +; OPT-NEXT: [[TMP136:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP137:%.*]] = insertelement <128 x i8> [[TMP135]], i8 [[TMP136]], i32 68 +; OPT-NEXT: [[TMP138:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP139:%.*]] = insertelement <128 x i8> [[TMP137]], i8 [[TMP138]], i32 69 +; OPT-NEXT: [[TMP140:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP141:%.*]] = insertelement <128 x i8> [[TMP139]], i8 [[TMP140]], i32 70 +; OPT-NEXT: [[TMP142:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP143:%.*]] = insertelement <128 x i8> [[TMP141]], i8 [[TMP142]], i32 71 +; OPT-NEXT: [[TMP144:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP145:%.*]] = insertelement <128 x i8> [[TMP143]], i8 [[TMP144]], i32 72 +; OPT-NEXT: [[TMP146:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP147:%.*]] = insertelement <128 x i8> [[TMP145]], i8 [[TMP146]], i32 73 +; OPT-NEXT: [[TMP148:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP149:%.*]] = insertelement <128 x i8> [[TMP147]], i8 [[TMP148]], i32 74 +; OPT-NEXT: [[TMP150:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP151:%.*]] = insertelement <128 x i8> [[TMP149]], i8 [[TMP150]], i32 75 +; OPT-NEXT: [[TMP152:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP153:%.*]] = insertelement <128 x i8> [[TMP151]], i8 [[TMP152]], i32 76 +; OPT-NEXT: [[TMP154:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP155:%.*]] = insertelement <128 x i8> [[TMP153]], i8 [[TMP154]], i32 77 +; OPT-NEXT: [[TMP156:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP157:%.*]] = insertelement <128 x i8> [[TMP155]], i8 [[TMP156]], i32 78 +; OPT-NEXT: [[TMP158:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP159:%.*]] = insertelement <128 x i8> [[TMP157]], i8 [[TMP158]], i32 79 +; OPT-NEXT: [[TMP160:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP161:%.*]] = shufflevector <128 x i8> [[TMP159]], <128 x i8> [[TMP160]], <128 x i32> +; OPT-NEXT: [[TMP162:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP163:%.*]] = insertelement <128 x i8> [[TMP161]], i8 [[TMP162]], i32 81 +; OPT-NEXT: [[TMP164:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP165:%.*]] = insertelement <128 x i8> [[TMP163]], i8 [[TMP164]], i32 82 +; OPT-NEXT: [[TMP166:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP167:%.*]] = insertelement <128 x i8> [[TMP165]], i8 [[TMP166]], i32 83 +; OPT-NEXT: [[TMP168:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP169:%.*]] = insertelement <128 x i8> [[TMP167]], i8 [[TMP168]], i32 84 +; OPT-NEXT: [[TMP170:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP171:%.*]] = insertelement <128 x i8> [[TMP169]], i8 [[TMP170]], i32 85 +; OPT-NEXT: [[TMP172:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP173:%.*]] = insertelement <128 x i8> [[TMP171]], i8 [[TMP172]], i32 86 +; OPT-NEXT: [[TMP174:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP175:%.*]] = insertelement <128 x i8> [[TMP173]], i8 [[TMP174]], i32 87 +; OPT-NEXT: [[TMP176:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP177:%.*]] = insertelement <128 x i8> [[TMP175]], i8 [[TMP176]], i32 88 +; OPT-NEXT: [[TMP178:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP179:%.*]] = insertelement <128 x i8> [[TMP177]], i8 [[TMP178]], i32 89 +; OPT-NEXT: [[TMP180:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP181:%.*]] = insertelement <128 x i8> [[TMP179]], i8 [[TMP180]], i32 90 +; OPT-NEXT: [[TMP182:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP183:%.*]] = insertelement <128 x i8> [[TMP181]], i8 [[TMP182]], i32 91 +; OPT-NEXT: [[TMP184:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP185:%.*]] = insertelement <128 x i8> [[TMP183]], i8 [[TMP184]], i32 92 +; OPT-NEXT: [[TMP186:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP187:%.*]] = insertelement <128 x i8> [[TMP185]], i8 [[TMP186]], i32 93 +; OPT-NEXT: [[TMP188:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP189:%.*]] = insertelement <128 x i8> [[TMP187]], i8 [[TMP188]], i32 94 +; OPT-NEXT: [[TMP190:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP191:%.*]] = insertelement <128 x i8> [[TMP189]], i8 [[TMP190]], i32 95 +; OPT-NEXT: [[TMP192:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP193:%.*]] = shufflevector <128 x i8> [[TMP191]], <128 x i8> [[TMP192]], <128 x i32> +; OPT-NEXT: [[TMP194:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP195:%.*]] = insertelement <128 x i8> [[TMP193]], i8 [[TMP194]], i32 97 +; OPT-NEXT: [[TMP196:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP197:%.*]] = insertelement <128 x i8> [[TMP195]], i8 [[TMP196]], i32 98 +; OPT-NEXT: [[TMP198:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP199:%.*]] = insertelement <128 x i8> [[TMP197]], i8 [[TMP198]], i32 99 +; OPT-NEXT: [[TMP200:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP201:%.*]] = insertelement <128 x i8> [[TMP199]], i8 [[TMP200]], i32 100 +; OPT-NEXT: [[TMP202:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP203:%.*]] = insertelement <128 x i8> [[TMP201]], i8 [[TMP202]], i32 101 +; OPT-NEXT: [[TMP204:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP205:%.*]] = insertelement <128 x i8> [[TMP203]], i8 [[TMP204]], i32 102 +; OPT-NEXT: [[TMP206:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP207:%.*]] = insertelement <128 x i8> [[TMP205]], i8 [[TMP206]], i32 103 +; OPT-NEXT: [[TMP208:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP209:%.*]] = insertelement <128 x i8> [[TMP207]], i8 [[TMP208]], i32 104 +; OPT-NEXT: [[TMP210:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP211:%.*]] = insertelement <128 x i8> [[TMP209]], i8 [[TMP210]], i32 105 +; OPT-NEXT: [[TMP212:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP213:%.*]] = insertelement <128 x i8> [[TMP211]], i8 [[TMP212]], i32 106 +; OPT-NEXT: [[TMP214:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP215:%.*]] = insertelement <128 x i8> [[TMP213]], i8 [[TMP214]], i32 107 +; OPT-NEXT: [[TMP216:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP217:%.*]] = insertelement <128 x i8> [[TMP215]], i8 [[TMP216]], i32 108 +; OPT-NEXT: [[TMP218:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP219:%.*]] = insertelement <128 x i8> [[TMP217]], i8 [[TMP218]], i32 109 +; OPT-NEXT: [[TMP220:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP221:%.*]] = insertelement <128 x i8> [[TMP219]], i8 [[TMP220]], i32 110 +; OPT-NEXT: [[TMP222:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP223:%.*]] = insertelement <128 x i8> [[TMP221]], i8 [[TMP222]], i32 111 +; OPT-NEXT: [[TMP224:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <128 x i32> +; OPT-NEXT: [[TMP225:%.*]] = shufflevector <128 x i8> [[TMP223]], <128 x i8> [[TMP224]], <128 x i32> +; OPT-NEXT: [[TMP226:%.*]] = extractelement <16 x i8> [[IN]], i64 1 +; OPT-NEXT: [[TMP227:%.*]] = insertelement <128 x i8> [[TMP225]], i8 [[TMP226]], i32 113 +; OPT-NEXT: [[TMP228:%.*]] = extractelement <16 x i8> [[IN]], i64 2 +; OPT-NEXT: [[TMP229:%.*]] = insertelement <128 x i8> [[TMP227]], i8 [[TMP228]], i32 114 +; OPT-NEXT: [[TMP230:%.*]] = extractelement <16 x i8> [[IN]], i64 3 +; OPT-NEXT: [[TMP231:%.*]] = insertelement <128 x i8> [[TMP229]], i8 [[TMP230]], i32 115 +; OPT-NEXT: [[TMP232:%.*]] = extractelement <16 x i8> [[IN]], i64 4 +; OPT-NEXT: [[TMP233:%.*]] = insertelement <128 x i8> [[TMP231]], i8 [[TMP232]], i32 116 +; OPT-NEXT: [[TMP234:%.*]] = extractelement <16 x i8> [[IN]], i64 5 +; OPT-NEXT: [[TMP235:%.*]] = insertelement <128 x i8> [[TMP233]], i8 [[TMP234]], i32 117 +; OPT-NEXT: [[TMP236:%.*]] = extractelement <16 x i8> [[IN]], i64 6 +; OPT-NEXT: [[TMP237:%.*]] = insertelement <128 x i8> [[TMP235]], i8 [[TMP236]], i32 118 +; OPT-NEXT: [[TMP238:%.*]] = extractelement <16 x i8> [[IN]], i64 7 +; OPT-NEXT: [[TMP239:%.*]] = insertelement <128 x i8> [[TMP237]], i8 [[TMP238]], i32 119 +; OPT-NEXT: [[TMP240:%.*]] = extractelement <16 x i8> [[IN]], i64 8 +; OPT-NEXT: [[TMP241:%.*]] = insertelement <128 x i8> [[TMP239]], i8 [[TMP240]], i32 120 +; OPT-NEXT: [[TMP242:%.*]] = extractelement <16 x i8> [[IN]], i64 9 +; OPT-NEXT: [[TMP243:%.*]] = insertelement <128 x i8> [[TMP241]], i8 [[TMP242]], i32 121 +; OPT-NEXT: [[TMP244:%.*]] = extractelement <16 x i8> [[IN]], i64 10 +; OPT-NEXT: [[TMP245:%.*]] = insertelement <128 x i8> [[TMP243]], i8 [[TMP244]], i32 122 +; OPT-NEXT: [[TMP246:%.*]] = extractelement <16 x i8> [[IN]], i64 11 +; OPT-NEXT: [[TMP247:%.*]] = insertelement <128 x i8> [[TMP245]], i8 [[TMP246]], i32 123 +; OPT-NEXT: [[TMP248:%.*]] = extractelement <16 x i8> [[IN]], i64 12 +; OPT-NEXT: [[TMP249:%.*]] = insertelement <128 x i8> [[TMP247]], i8 [[TMP248]], i32 124 +; OPT-NEXT: [[TMP250:%.*]] = extractelement <16 x i8> [[IN]], i64 13 +; OPT-NEXT: [[TMP251:%.*]] = insertelement <128 x i8> [[TMP249]], i8 [[TMP250]], i32 125 +; OPT-NEXT: [[TMP252:%.*]] = extractelement <16 x i8> [[IN]], i64 14 +; OPT-NEXT: [[TMP253:%.*]] = insertelement <128 x i8> [[TMP251]], i8 [[TMP252]], i32 126 +; OPT-NEXT: [[TMP254:%.*]] = extractelement <16 x i8> [[IN]], i64 15 +; OPT-NEXT: [[TMP255:%.*]] = insertelement <128 x i8> [[TMP253]], i8 [[TMP254]], i32 127 +; OPT-NEXT: [[TMP256:%.*]] = shufflevector <16 x i8> [[IN]], <16 x i8> poison, <16 x i32> +; OPT-NEXT: [[TMP257:%.*]] = insertelement <16 x i8> [[TMP256]], i8 [[TMP162]], i64 1 +; OPT-NEXT: [[TMP258:%.*]] = insertelement <16 x i8> [[TMP257]], i8 [[TMP164]], i64 2 +; OPT-NEXT: [[TMP259:%.*]] = insertelement <16 x i8> [[TMP258]], i8 [[TMP166]], i64 3 +; OPT-NEXT: [[TMP260:%.*]] = insertelement <16 x i8> [[TMP259]], i8 [[TMP168]], i64 4 +; OPT-NEXT: [[TMP261:%.*]] = insertelement <16 x i8> [[TMP260]], i8 [[TMP170]], i64 5 +; OPT-NEXT: [[TMP262:%.*]] = insertelement <16 x i8> [[TMP261]], i8 [[TMP172]], i64 6 +; OPT-NEXT: [[TMP263:%.*]] = insertelement <16 x i8> [[TMP262]], i8 [[TMP174]], i64 7 +; OPT-NEXT: [[TMP264:%.*]] = insertelement <16 x i8> [[TMP263]], i8 [[TMP176]], i64 8 +; OPT-NEXT: [[TMP265:%.*]] = insertelement <16 x i8> [[TMP264]], i8 [[TMP178]], i64 9 +; OPT-NEXT: [[TMP266:%.*]] = insertelement <16 x i8> [[TMP265]], i8 [[TMP180]], i64 10 +; OPT-NEXT: [[TMP267:%.*]] = insertelement <16 x i8> [[TMP266]], i8 [[TMP182]], i64 11 +; OPT-NEXT: [[TMP268:%.*]] = insertelement <16 x i8> [[TMP267]], i8 [[TMP184]], i64 12 +; OPT-NEXT: [[TMP269:%.*]] = insertelement <16 x i8> [[TMP268]], i8 [[TMP186]], i64 13 +; OPT-NEXT: [[TMP270:%.*]] = insertelement <16 x i8> [[TMP269]], i8 [[TMP188]], i64 14 +; OPT-NEXT: [[TMP271:%.*]] = shufflevector <16 x i8> [[TMP270]], <16 x i8> [[IN]], <16 x i32> +; OPT-NEXT: [[SUM:%.*]] = add <16 x i8> [[TMP271]], [[ADD]] +; OPT-NEXT: store <16 x i8> [[SUM]], ptr addrspace(3) [[OUT]], align 16 +; OPT-NEXT: ret void +; +entry: + %alloca = freeze <128 x i8> poison + %0 = extractelement <16 x i8> %in, i64 0 + %1 = insertelement <128 x i8> %alloca, i8 %0, i32 0 + %2 = extractelement <16 x i8> %in, i64 1 + %3 = insertelement <128 x i8> %1, i8 %2, i32 1 + %4 = extractelement <16 x i8> %in, i64 2 + %5 = insertelement <128 x i8> %3, i8 %4, i32 2 + %6 = extractelement <16 x i8> %in, i64 3 + %7 = insertelement <128 x i8> %5, i8 %6, i32 3 + %8 = extractelement <16 x i8> %in, i64 4 + %9 = insertelement <128 x i8> %7, i8 %8, i32 4 + %10 = extractelement <16 x i8> %in, i64 5 + %11 = insertelement <128 x i8> %9, i8 %10, i32 5 + %12 = extractelement <16 x i8> %in, i64 6 + %13 = insertelement <128 x i8> %11, i8 %12, i32 6 + %14 = extractelement <16 x i8> %in, i64 7 + %15 = insertelement <128 x i8> %13, i8 %14, i32 7 + %16 = extractelement <16 x i8> %in, i64 8 + %17 = insertelement <128 x i8> %15, i8 %16, i32 8 + %18 = extractelement <16 x i8> %in, i64 9 + %19 = insertelement <128 x i8> %17, i8 %18, i32 9 + %20 = extractelement <16 x i8> %in, i64 10 + %21 = insertelement <128 x i8> %19, i8 %20, i32 10 + %22 = extractelement <16 x i8> %in, i64 11 + %23 = insertelement <128 x i8> %21, i8 %22, i32 11 + %24 = extractelement <16 x i8> %in, i64 12 + %25 = insertelement <128 x i8> %23, i8 %24, i32 12 + %26 = extractelement <16 x i8> %in, i64 13 + %27 = insertelement <128 x i8> %25, i8 %26, i32 13 + %28 = extractelement <16 x i8> %in, i64 14 + %29 = insertelement <128 x i8> %27, i8 %28, i32 14 + %30 = extractelement <16 x i8> %in, i64 15 + %31 = insertelement <128 x i8> %29, i8 %30, i32 15 + %32 = extractelement <16 x i8> %in, i64 0 + %33 = insertelement <128 x i8> %31, i8 %32, i32 16 + %34 = extractelement <16 x i8> %in, i64 1 + %35 = insertelement <128 x i8> %33, i8 %34, i32 17 + %36 = extractelement <16 x i8> %in, i64 2 + %37 = insertelement <128 x i8> %35, i8 %36, i32 18 + %38 = extractelement <16 x i8> %in, i64 3 + %39 = insertelement <128 x i8> %37, i8 %38, i32 19 + %40 = extractelement <16 x i8> %in, i64 4 + %41 = insertelement <128 x i8> %39, i8 %40, i32 20 + %42 = extractelement <16 x i8> %in, i64 5 + %43 = insertelement <128 x i8> %41, i8 %42, i32 21 + %44 = extractelement <16 x i8> %in, i64 6 + %45 = insertelement <128 x i8> %43, i8 %44, i32 22 + %46 = extractelement <16 x i8> %in, i64 7 + %47 = insertelement <128 x i8> %45, i8 %46, i32 23 + %48 = extractelement <16 x i8> %in, i64 8 + %49 = insertelement <128 x i8> %47, i8 %48, i32 24 + %50 = extractelement <16 x i8> %in, i64 9 + %51 = insertelement <128 x i8> %49, i8 %50, i32 25 + %52 = extractelement <16 x i8> %in, i64 10 + %53 = insertelement <128 x i8> %51, i8 %52, i32 26 + %54 = extractelement <16 x i8> %in, i64 11 + %55 = insertelement <128 x i8> %53, i8 %54, i32 27 + %56 = extractelement <16 x i8> %in, i64 12 + %57 = insertelement <128 x i8> %55, i8 %56, i32 28 + %58 = extractelement <16 x i8> %in, i64 13 + %59 = insertelement <128 x i8> %57, i8 %58, i32 29 + %60 = extractelement <16 x i8> %in, i64 14 + %61 = insertelement <128 x i8> %59, i8 %60, i32 30 + %62 = extractelement <16 x i8> %in, i64 15 + %63 = insertelement <128 x i8> %61, i8 %62, i32 31 + %64 = extractelement <16 x i8> %in, i64 0 + %65 = insertelement <128 x i8> %63, i8 %64, i32 32 + %66 = extractelement <16 x i8> %in, i64 1 + %67 = insertelement <128 x i8> %65, i8 %66, i32 33 + %68 = extractelement <16 x i8> %in, i64 2 + %69 = insertelement <128 x i8> %67, i8 %68, i32 34 + %70 = extractelement <16 x i8> %in, i64 3 + %71 = insertelement <128 x i8> %69, i8 %70, i32 35 + %72 = extractelement <16 x i8> %in, i64 4 + %73 = insertelement <128 x i8> %71, i8 %72, i32 36 + %74 = extractelement <16 x i8> %in, i64 5 + %75 = insertelement <128 x i8> %73, i8 %74, i32 37 + %76 = extractelement <16 x i8> %in, i64 6 + %77 = insertelement <128 x i8> %75, i8 %76, i32 38 + %78 = extractelement <16 x i8> %in, i64 7 + %79 = insertelement <128 x i8> %77, i8 %78, i32 39 + %80 = extractelement <16 x i8> %in, i64 8 + %81 = insertelement <128 x i8> %79, i8 %80, i32 40 + %82 = extractelement <16 x i8> %in, i64 9 + %83 = insertelement <128 x i8> %81, i8 %82, i32 41 + %84 = extractelement <16 x i8> %in, i64 10 + %85 = insertelement <128 x i8> %83, i8 %84, i32 42 + %86 = extractelement <16 x i8> %in, i64 11 + %87 = insertelement <128 x i8> %85, i8 %86, i32 43 + %88 = extractelement <16 x i8> %in, i64 12 + %89 = insertelement <128 x i8> %87, i8 %88, i32 44 + %90 = extractelement <16 x i8> %in, i64 13 + %91 = insertelement <128 x i8> %89, i8 %90, i32 45 + %92 = extractelement <16 x i8> %in, i64 14 + %93 = insertelement <128 x i8> %91, i8 %92, i32 46 + %94 = extractelement <16 x i8> %in, i64 15 + %95 = insertelement <128 x i8> %93, i8 %94, i32 47 + %96 = extractelement <16 x i8> %in, i64 0 + %97 = insertelement <128 x i8> %95, i8 %96, i32 48 + %98 = extractelement <16 x i8> %in, i64 1 + %99 = insertelement <128 x i8> %97, i8 %98, i32 49 + %100 = extractelement <16 x i8> %in, i64 2 + %101 = insertelement <128 x i8> %99, i8 %100, i32 50 + %102 = extractelement <16 x i8> %in, i64 3 + %103 = insertelement <128 x i8> %101, i8 %102, i32 51 + %104 = extractelement <16 x i8> %in, i64 4 + %105 = insertelement <128 x i8> %103, i8 %104, i32 52 + %106 = extractelement <16 x i8> %in, i64 5 + %107 = insertelement <128 x i8> %105, i8 %106, i32 53 + %108 = extractelement <16 x i8> %in, i64 6 + %109 = insertelement <128 x i8> %107, i8 %108, i32 54 + %110 = extractelement <16 x i8> %in, i64 7 + %111 = insertelement <128 x i8> %109, i8 %110, i32 55 + %112 = extractelement <16 x i8> %in, i64 8 + %113 = insertelement <128 x i8> %111, i8 %112, i32 56 + %114 = extractelement <16 x i8> %in, i64 9 + %115 = insertelement <128 x i8> %113, i8 %114, i32 57 + %116 = extractelement <16 x i8> %in, i64 10 + %117 = insertelement <128 x i8> %115, i8 %116, i32 58 + %118 = extractelement <16 x i8> %in, i64 11 + %119 = insertelement <128 x i8> %117, i8 %118, i32 59 + %120 = extractelement <16 x i8> %in, i64 12 + %121 = insertelement <128 x i8> %119, i8 %120, i32 60 + %122 = extractelement <16 x i8> %in, i64 13 + %123 = insertelement <128 x i8> %121, i8 %122, i32 61 + %124 = extractelement <16 x i8> %in, i64 14 + %125 = insertelement <128 x i8> %123, i8 %124, i32 62 + %126 = extractelement <16 x i8> %in, i64 15 + %127 = insertelement <128 x i8> %125, i8 %126, i32 63 + %128 = extractelement <16 x i8> %in, i64 0 + %129 = insertelement <128 x i8> %127, i8 %128, i32 64 + %130 = extractelement <16 x i8> %in, i64 1 + %131 = insertelement <128 x i8> %129, i8 %130, i32 65 + %132 = extractelement <16 x i8> %in, i64 2 + %133 = insertelement <128 x i8> %131, i8 %132, i32 66 + %134 = extractelement <16 x i8> %in, i64 3 + %135 = insertelement <128 x i8> %133, i8 %134, i32 67 + %136 = extractelement <16 x i8> %in, i64 4 + %137 = insertelement <128 x i8> %135, i8 %136, i32 68 + %138 = extractelement <16 x i8> %in, i64 5 + %139 = insertelement <128 x i8> %137, i8 %138, i32 69 + %140 = extractelement <16 x i8> %in, i64 6 + %141 = insertelement <128 x i8> %139, i8 %140, i32 70 + %142 = extractelement <16 x i8> %in, i64 7 + %143 = insertelement <128 x i8> %141, i8 %142, i32 71 + %144 = extractelement <16 x i8> %in, i64 8 + %145 = insertelement <128 x i8> %143, i8 %144, i32 72 + %146 = extractelement <16 x i8> %in, i64 9 + %147 = insertelement <128 x i8> %145, i8 %146, i32 73 + %148 = extractelement <16 x i8> %in, i64 10 + %149 = insertelement <128 x i8> %147, i8 %148, i32 74 + %150 = extractelement <16 x i8> %in, i64 11 + %151 = insertelement <128 x i8> %149, i8 %150, i32 75 + %152 = extractelement <16 x i8> %in, i64 12 + %153 = insertelement <128 x i8> %151, i8 %152, i32 76 + %154 = extractelement <16 x i8> %in, i64 13 + %155 = insertelement <128 x i8> %153, i8 %154, i32 77 + %156 = extractelement <16 x i8> %in, i64 14 + %157 = insertelement <128 x i8> %155, i8 %156, i32 78 + %158 = extractelement <16 x i8> %in, i64 15 + %159 = insertelement <128 x i8> %157, i8 %158, i32 79 + %160 = extractelement <16 x i8> %in, i64 0 + %161 = insertelement <128 x i8> %159, i8 %160, i32 80 + %162 = extractelement <16 x i8> %in, i64 1 + %163 = insertelement <128 x i8> %161, i8 %162, i32 81 + %164 = extractelement <16 x i8> %in, i64 2 + %165 = insertelement <128 x i8> %163, i8 %164, i32 82 + %166 = extractelement <16 x i8> %in, i64 3 + %167 = insertelement <128 x i8> %165, i8 %166, i32 83 + %168 = extractelement <16 x i8> %in, i64 4 + %169 = insertelement <128 x i8> %167, i8 %168, i32 84 + %170 = extractelement <16 x i8> %in, i64 5 + %171 = insertelement <128 x i8> %169, i8 %170, i32 85 + %172 = extractelement <16 x i8> %in, i64 6 + %173 = insertelement <128 x i8> %171, i8 %172, i32 86 + %174 = extractelement <16 x i8> %in, i64 7 + %175 = insertelement <128 x i8> %173, i8 %174, i32 87 + %176 = extractelement <16 x i8> %in, i64 8 + %177 = insertelement <128 x i8> %175, i8 %176, i32 88 + %178 = extractelement <16 x i8> %in, i64 9 + %179 = insertelement <128 x i8> %177, i8 %178, i32 89 + %180 = extractelement <16 x i8> %in, i64 10 + %181 = insertelement <128 x i8> %179, i8 %180, i32 90 + %182 = extractelement <16 x i8> %in, i64 11 + %183 = insertelement <128 x i8> %181, i8 %182, i32 91 + %184 = extractelement <16 x i8> %in, i64 12 + %185 = insertelement <128 x i8> %183, i8 %184, i32 92 + %186 = extractelement <16 x i8> %in, i64 13 + %187 = insertelement <128 x i8> %185, i8 %186, i32 93 + %188 = extractelement <16 x i8> %in, i64 14 + %189 = insertelement <128 x i8> %187, i8 %188, i32 94 + %190 = extractelement <16 x i8> %in, i64 15 + %191 = insertelement <128 x i8> %189, i8 %190, i32 95 + %192 = extractelement <16 x i8> %in, i64 0 + %193 = insertelement <128 x i8> %191, i8 %192, i32 96 + %194 = extractelement <16 x i8> %in, i64 1 + %195 = insertelement <128 x i8> %193, i8 %194, i32 97 + %196 = extractelement <16 x i8> %in, i64 2 + %197 = insertelement <128 x i8> %195, i8 %196, i32 98 + %198 = extractelement <16 x i8> %in, i64 3 + %199 = insertelement <128 x i8> %197, i8 %198, i32 99 + %200 = extractelement <16 x i8> %in, i64 4 + %201 = insertelement <128 x i8> %199, i8 %200, i32 100 + %202 = extractelement <16 x i8> %in, i64 5 + %203 = insertelement <128 x i8> %201, i8 %202, i32 101 + %204 = extractelement <16 x i8> %in, i64 6 + %205 = insertelement <128 x i8> %203, i8 %204, i32 102 + %206 = extractelement <16 x i8> %in, i64 7 + %207 = insertelement <128 x i8> %205, i8 %206, i32 103 + %208 = extractelement <16 x i8> %in, i64 8 + %209 = insertelement <128 x i8> %207, i8 %208, i32 104 + %210 = extractelement <16 x i8> %in, i64 9 + %211 = insertelement <128 x i8> %209, i8 %210, i32 105 + %212 = extractelement <16 x i8> %in, i64 10 + %213 = insertelement <128 x i8> %211, i8 %212, i32 106 + %214 = extractelement <16 x i8> %in, i64 11 + %215 = insertelement <128 x i8> %213, i8 %214, i32 107 + %216 = extractelement <16 x i8> %in, i64 12 + %217 = insertelement <128 x i8> %215, i8 %216, i32 108 + %218 = extractelement <16 x i8> %in, i64 13 + %219 = insertelement <128 x i8> %217, i8 %218, i32 109 + %220 = extractelement <16 x i8> %in, i64 14 + %221 = insertelement <128 x i8> %219, i8 %220, i32 110 + %222 = extractelement <16 x i8> %in, i64 15 + %223 = insertelement <128 x i8> %221, i8 %222, i32 111 + %224 = extractelement <16 x i8> %in, i64 0 + %225 = insertelement <128 x i8> %223, i8 %224, i32 112 + %226 = extractelement <16 x i8> %in, i64 1 + %227 = insertelement <128 x i8> %225, i8 %226, i32 113 + %228 = extractelement <16 x i8> %in, i64 2 + %229 = insertelement <128 x i8> %227, i8 %228, i32 114 + %230 = extractelement <16 x i8> %in, i64 3 + %231 = insertelement <128 x i8> %229, i8 %230, i32 115 + %232 = extractelement <16 x i8> %in, i64 4 + %233 = insertelement <128 x i8> %231, i8 %232, i32 116 + %234 = extractelement <16 x i8> %in, i64 5 + %235 = insertelement <128 x i8> %233, i8 %234, i32 117 + %236 = extractelement <16 x i8> %in, i64 6 + %237 = insertelement <128 x i8> %235, i8 %236, i32 118 + %238 = extractelement <16 x i8> %in, i64 7 + %239 = insertelement <128 x i8> %237, i8 %238, i32 119 + %240 = extractelement <16 x i8> %in, i64 8 + %241 = insertelement <128 x i8> %239, i8 %240, i32 120 + %242 = extractelement <16 x i8> %in, i64 9 + %243 = insertelement <128 x i8> %241, i8 %242, i32 121 + %244 = extractelement <16 x i8> %in, i64 10 + %245 = insertelement <128 x i8> %243, i8 %244, i32 122 + %246 = extractelement <16 x i8> %in, i64 11 + %247 = insertelement <128 x i8> %245, i8 %246, i32 123 + %248 = extractelement <16 x i8> %in, i64 12 + %249 = insertelement <128 x i8> %247, i8 %248, i32 124 + %250 = extractelement <16 x i8> %in, i64 13 + %251 = insertelement <128 x i8> %249, i8 %250, i32 125 + %252 = extractelement <16 x i8> %in, i64 14 + %253 = insertelement <128 x i8> %251, i8 %252, i32 126 + %254 = extractelement <16 x i8> %in, i64 15 + %255 = insertelement <128 x i8> %253, i8 %254, i32 127 + %256 = insertelement <16 x i8> poison, i8 %160, i64 0 + %257 = insertelement <16 x i8> %256, i8 %162, i64 1 + %258 = insertelement <16 x i8> %257, i8 %164, i64 2 + %259 = insertelement <16 x i8> %258, i8 %166, i64 3 + %260 = insertelement <16 x i8> %259, i8 %168, i64 4 + %261 = insertelement <16 x i8> %260, i8 %170, i64 5 + %262 = insertelement <16 x i8> %261, i8 %172, i64 6 + %263 = insertelement <16 x i8> %262, i8 %174, i64 7 + %264 = insertelement <16 x i8> %263, i8 %176, i64 8 + %265 = insertelement <16 x i8> %264, i8 %178, i64 9 + %266 = insertelement <16 x i8> %265, i8 %180, i64 10 + %267 = insertelement <16 x i8> %266, i8 %182, i64 11 + %268 = insertelement <16 x i8> %267, i8 %184, i64 12 + %269 = insertelement <16 x i8> %268, i8 %186, i64 13 + %270 = insertelement <16 x i8> %269, i8 %188, i64 14 + %271 = insertelement <16 x i8> %270, i8 %190, i64 15 + %sum = add <16 x i8> %271, %add + store <16 x i8> %sum, ptr addrspace(3) %out, align 16 + ret void +} + +attributes #0 = { "amdgpu-waves-per-eu"="2,2" } From bb563b196f0e70b2790cdfe2619fbd34f273b508 Mon Sep 17 00:00:00 2001 From: Kelvin Li Date: Mon, 3 Nov 2025 22:58:56 -0500 Subject: [PATCH 11/11] [OpenMP][AIX] Not to create symbolic links to libomp.so on AIX (#165890) On AIX, it generates libomp for both static and dynamic. There is no need to create symbolic links to libomp.so. --------- Co-authored-by: Xing Xue --- openmp/runtime/src/CMakeLists.txt | 40 ++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/openmp/runtime/src/CMakeLists.txt b/openmp/runtime/src/CMakeLists.txt index 6ac047a833fe5..5dd7f4b33612d 100644 --- a/openmp/runtime/src/CMakeLists.txt +++ b/openmp/runtime/src/CMakeLists.txt @@ -254,23 +254,35 @@ set(LIBOMP_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE) # Add symbolic links to libomp if(NOT WIN32) - add_custom_command(TARGET omp POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} - libgomp${LIBOMP_LIBRARY_SUFFIX} - COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} - libiomp5${LIBOMP_LIBRARY_SUFFIX} - WORKING_DIRECTORY ${LIBOMP_LIBRARY_DIR} - ) - if(LIBOMP_ENABLE_SHARED) - if(APPLE) - set(VERSIONED_LIBGOMP_NAME libgomp.1${LIBOMP_LIBRARY_SUFFIX}) - else() - set(VERSIONED_LIBGOMP_NAME libgomp${LIBOMP_LIBRARY_SUFFIX}.1) - endif() + if(AIX) + # On AIX, libomp.a is the name for both static and shared objects. + set(LIBOMP_AIX_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) add_custom_command(TARGET omp POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} ${VERSIONED_LIBGOMP_NAME} + COMMAND ${CMAKE_COMMAND} -E create_symlink + ${LIBOMP_LIB_NAME}${LIBOMP_AIX_SUFFIX} libgomp${LIBOMP_AIX_SUFFIX} + COMMAND ${CMAKE_COMMAND} -E create_symlink + ${LIBOMP_LIB_NAME}${LIBOMP_AIX_SUFFIX} libiomp5${LIBOMP_AIX_SUFFIX} WORKING_DIRECTORY ${LIBOMP_LIBRARY_DIR} ) + else() + add_custom_command(TARGET omp POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} + libiomp5${LIBOMP_LIBRARY_SUFFIX} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} + libgomp${LIBOMP_LIBRARY_SUFFIX} + WORKING_DIRECTORY ${LIBOMP_LIBRARY_DIR} + ) + if(LIBOMP_ENABLE_SHARED) + if(APPLE) + set(VERSIONED_LIBGOMP_NAME libgomp.1${LIBOMP_LIBRARY_SUFFIX}) + else() + set(VERSIONED_LIBGOMP_NAME libgomp${LIBOMP_LIBRARY_SUFFIX}.1) + endif() + add_custom_command(TARGET omp POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink ${LIBOMP_LIB_FILE} ${VERSIONED_LIBGOMP_NAME} + WORKING_DIRECTORY ${LIBOMP_LIBRARY_DIR} + ) + endif() endif() endif()