Use opt -passes=<name> instead of opt -name

Updated the RUN line in several test cases to use the new PM syntax
  opt -passes=<pipeline>
instead of the deprecated syntax
  opt -pass1 -pass2
This commit is contained in:
Bjorn Pettersson 2022-11-07 10:46:57 +01:00
parent 5f9a82683d
commit ac696ac453
59 changed files with 63 additions and 64 deletions

View File

@ -158,9 +158,9 @@ non-obvious ways. Here are some hints and tips:
repeat until a bug is found or the user kills ``bugpoint``.
* ``bugpoint`` can produce IR which contains long names. Run ``opt
-metarenamer`` over the IR to rename everything using easy-to-read,
metasyntactic names. Alternatively, run ``opt -strip -instnamer`` to rename
everything with very short (often purely numeric) names.
-passes=metarenamer`` over the IR to rename everything using easy-to-read,
metasyntactic names. Alternatively, run ``opt -passes=strip,instnamer`` to
rename everything with very short (often purely numeric) names.
What to do when bugpoint isn't enough
=====================================

View File

@ -1,4 +1,4 @@
; RUN: opt -mtriple=x86_64-- -early-cse -earlycse-debug-hash < %s -S | FileCheck %s
; RUN: opt -mtriple=x86_64-- -passes=early-cse -earlycse-debug-hash < %s -S | FileCheck %s
; CHECK: @foo(x86_mmx bitcast (double 0.000000e+00 to x86_mmx))

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -S -mem2reg -instcombine | FileCheck %s
; RUN: opt < %s -S -passes=mem2reg,instcombine | FileCheck %s
; The '%bar' alloca will be promoted to an SSA register by mem2reg: test that
; zero line number are assigned to the dbg.value intrinsics that are inserted

View File

@ -1,4 +1,4 @@
; RUN: opt -mem2reg %s -S -o - | FileCheck %s
; RUN: opt -passes=mem2reg %s -S -o - | FileCheck %s
;; Check that mem2reg removes dbg.value(%param.addr, DIExpression(DW_OP_deref...))
;; when promoting the alloca %param.addr.

View File

@ -1,4 +1,4 @@
; RUN: opt -mem2reg %s -S -o - | FileCheck %s
; RUN: opt -passes=mem2reg %s -S -o - | FileCheck %s
;; Check that mem2reg removes dbg.value(%local, DIExpression(DW_OP_deref...))
;; that instcombine LowerDbgDeclare inserted before the call to 'esc' when

View File

@ -1,4 +1,4 @@
; RUN: opt -mem2reg %s -S -o - | FileCheck %s
; RUN: opt -passes=mem2reg %s -S -o - | FileCheck %s
;; Check that mem2reg removes dbg.value(%local, DIExpression(DW_OP_deref...))
;; that instcombine LowerDbgDeclare inserted before the call to 'esc' when

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S %s -o - | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S %s -o - | FileCheck %s
; PR40628: The first load below is determined to be redundant by EarlyCSE.
; During salvaging, the corresponding dbg.value could have a DW_OP_deref used

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -mem2reg -S | FileCheck %s
; RUN: opt < %s -passes=mem2reg -S | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,4 +1,4 @@
; RUN: opt %s -debugify -early-cse -earlycse-debug-hash -S | FileCheck %s
; RUN: opt %s -passes=debugify,early-cse -earlycse-debug-hash -S | FileCheck %s
define i32 @foo(i64 %nose, i32 %more) {
; CHECK-LABEL: @foo(
; CHECK: call void @llvm.dbg.value(metadata i64 %nose, metadata [[V1:![0-9]+]], metadata !DIExpression(DW_OP_LLVM_convert, 64, DW_ATE_unsigned, DW_OP_LLVM_convert, 32, DW_ATE_unsigned

View File

@ -1,4 +1,4 @@
; RUN: opt %s -sroa -early-cse -S | FileCheck %s
; RUN: opt %s -passes=sroa,early-cse -S | FileCheck %s
; CHECK: DIExpression(DW_OP_constu, 9223372036854775808, DW_OP_minus, DW_OP_stack_value)
; Created from the following C input (and then delta-reduced the IR):
;

View File

@ -1,4 +1,4 @@
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
; This test isn't directly related to EarlyCSE or varargs. It is just
; using these as a vehicle for testing the correctness of

View File

@ -1,5 +1,5 @@
; REQUIRES: asserts
; RUN: opt -S -debug-counter=early-cse-skip=1,early-cse-count=1 -early-cse -earlycse-debug-hash < %s 2>&1 | FileCheck %s
; RUN: opt -S -debug-counter=early-cse-skip=1,early-cse-count=1 -passes=early-cse -earlycse-debug-hash < %s 2>&1 | FileCheck %s
;; Test that, with debug counters on, we only optimize the second CSE opportunity.
define i32 @test(i32 %a, i32 %b) {
; CHECK-LABEL: @test(

View File

@ -1,6 +1,6 @@
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -gvn < %s | FileCheck %s
; RUN: opt -S -newgvn < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=gvn < %s | FileCheck %s
; RUN: opt -S -passes=newgvn < %s | FileCheck %s
; These tests checks if passes with CSE functionality can do CSE on
; launder.invariant.group, that is prohibited if there is a memory clobber

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -canon-freeze -S | FileCheck %s
; RUN: opt < %s -passes=canon-freeze -S | FileCheck %s
; A set of tests that have several phi nodes
declare void @call(i32)
declare i32 @call2()

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -S -mtriple=amdgcn-- -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -mtriple=amdgcn-- -passes=early-cse -earlycse-debug-hash | FileCheck %s
; CHECK-LABEL: @no_cse
; CHECK: call i32 @llvm.amdgcn.s.buffer.load.i32(<4 x i32> %in, i32 0, i32 0)

View File

@ -1,4 +1,4 @@
; RUN: opt %s -early-cse -S | FileCheck %s
; RUN: opt %s -passes=early-cse -S | FileCheck %s
define void @fn() {
entry:

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -S < %s | FileCheck %s
; We allow either sign to provide flexibility for mathlib
; implementations. The POSIX standard is not strict here.

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
define i32 @test12(i1 %B, ptr %P1, ptr %P2) {

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; RUN: opt < %s -S -passes=early-cse | FileCheck %s

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
define void @test1(float %A, float %B, ptr %PA, ptr %PB) {

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s
; Can we CSE a known condition to a constant?

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S %s | FileCheck %s
%mystruct = type { i32 }

View File

@ -1,4 +1,4 @@
; RUN: opt -S %s -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt -S %s -passes=early-cse -earlycse-debug-hash | FileCheck %s
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S %s -o - | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S %s -o - | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; Function Attrs: nounwind uwtable

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Test use of constrained floating point intrinsics in the default

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Test use of constrained floating point intrinsics with consistent

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s
; Same as GVN/edge.ll, but updated to reflect EarlyCSE's less powerful
; implementation. EarlyCSE currently doesn't exploit equality comparisons

View File

@ -1,4 +1,4 @@
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; NOTE: This file is testing the current implementation. Some of
; the transforms used as negative tests below would be legal, but

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s
declare void @use(i1)

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Ensure we don't simplify away additions vectors of +0.0's (same as scalars).

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
declare void @func()
declare i32 @"personality_function"()

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt < %s -S -passes='early-cse<memssa>' --enable-knowledge-retention | FileCheck %s --check-prefixes=CHECK,USE_ASSUME

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s
; PR12231

View File

@ -1,4 +1,4 @@
; RUN: opt -S < %s -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt -S < %s -passes=early-cse -earlycse-debug-hash | FileCheck %s
declare void @llvm.sideeffect()

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt -S -passes='early-cse' -earlycse-debug-hash < %s | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt -S -passes='early-cse<memssa>' < %s | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt -S -passes='early-cse<memssa>' --enable-knowledge-retention < %s | FileCheck %s --check-prefixes=CHECK,USE_ASSUME

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt < %s -S -early-cse --enable-knowledge-retention | FileCheck %s --check-prefixes=CHECK,USE_ASSUME
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
; RUN: opt < %s -S -passes=early-cse --enable-knowledge-retention | FileCheck %s --check-prefixes=CHECK,USE_ASSUME
; RUN: opt < %s -S -passes=early-cse | FileCheck %s --check-prefixes=CHECK,NO_ASSUME
declare ptr @llvm.invariant.start.p0(i64, ptr nocapture) nounwind readonly

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse < %s | FileCheck %s
; RUN: opt -S -passes=early-cse < %s | FileCheck %s
; Unequal mask check.

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse < %s | FileCheck %s
; RUN: opt -S -passes=early-cse < %s | FileCheck %s
define <128 x i8> @f0(ptr %a0, <128 x i8> %a1, <128 x i8> %a2) {
; CHECK-LABEL: @f0(

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
declare double @acos(double) #0
define double @f_acos() {

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
declare double @atan2(double, double) #0
define double @f_atan2() {

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s --check-prefix=CHECK-NOMEMSSA
; RUN: opt < %s -S -passes='early-cse' -earlycse-debug-hash | FileCheck %s --check-prefix=CHECK-NOMEMSSA
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; RUN: opt < %s -S -passes='early-cse' | FileCheck %s --check-prefix=CHECK-NOMEMSSA
; RUN: opt < %s -S -aa-pipeline=basic-aa -passes='early-cse<memssa>' | FileCheck %s

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Test use of constrained floating point intrinsics mixing the default

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S < %s -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt -S < %s -passes=early-cse -earlycse-debug-hash | FileCheck %s
; Store-to-load forwarding across a @llvm.experimental.noalias.scope.decl.

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Test use of constrained floating point intrinsics with consistent

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -opaque-pointers < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -opaque-pointers < %s | FileCheck %s
define i32 @different_types_load(ptr %p) {
; CHECK-LABEL: @different_types_load(

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s
; Most basic case, fully identical PHI nodes

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
declare void @readnone_may_unwind() readnone

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
; Test use of constrained floating point intrinsics with dynamic

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes=early-cse -earlycse-debug-hash | FileCheck %s
; RUN: opt < %s -S -passes='early-cse<memssa>' | FileCheck %s
define i64 @branching_int(i32 %a) {

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
@var = global i32 undef
declare void @foo() nounwind

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -instcombine -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=instcombine,early-cse -earlycse-debug-hash -S < %s | FileCheck %s
define ptr @simplifyNullLaunder() {
; CHECK-LABEL: @simplifyNullLaunder(

View File

@ -1,4 +1,3 @@
; RUN: opt -S -instnamer < %s | FileCheck %s
; RUN: opt -S -passes=instnamer < %s | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64-ni:2"
target triple = "armv7-unknown-linux-gnueabi"

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
declare float @nearbyintf(float) #0
declare float @llvm.nearbyint.f32(float)

View File

@ -1,4 +1,4 @@
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
declare float @roundf(float) #0
declare float @llvm.round.f32(float)

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -early-cse -earlycse-debug-hash < %s | FileCheck %s
; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
declare float @truncf(float) #0
declare float @llvm.trunc.f32(float)

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64"

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64"

View File

@ -1,4 +1,4 @@
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -passes=early-cse -earlycse-debug-hash -S < %s | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64"