; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -global-isel=0 -mtriple=aarch64 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-SD ; RUN: llc -global-isel=1 -mtriple=aarch64 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-GI define i64 @or_and_xy_x(i64 %x, i64 %y) { ; CHECK-LABEL: or_and_xy_x: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(and(x, y), x) -> x %and = and i64 %x, %y %or = or i64 %and, %x ret i64 %or } define i64 @or_and_yx_x(i64 %x, i64 %y) { ; CHECK-LABEL: or_and_yx_x: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(and(y, x), x) -> x %and = and i64 %y, %x %or = or i64 %and, %x ret i64 %or } define i64 @or_x_and_xy(i64 %x, i64 %y) { ; CHECK-LABEL: or_x_and_xy: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(x, and(x, y)) -> x %and = and i64 %x, %y %or = or i64 %x, %and ret i64 %or } define i64 @or_x_and_yx(i64 %x, i64 %y) { ; CHECK-LABEL: or_x_and_yx: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(x, and(y, x)) -> x %and = and i64 %y, %x %or = or i64 %x, %and ret i64 %or } define <4 x i16> @or_and_xy_x_vector(<4 x i16> %x, <4 x i16> %y) { ; CHECK-LABEL: or_and_xy_x_vector: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(and(x, y), x) -> x %and = and <4 x i16> %x, %y %or = or <4 x i16> %and, %x ret <4 x i16> %or } define <4 x i16> @or_and_yx_x_vector(<4 x i16> %x, <4 x i16> %y) { ; CHECK-LABEL: or_and_yx_x_vector: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(and(y, x), x) -> x %and = and <4 x i16> %y, %x %or = or <4 x i16> %and, %x ret <4 x i16> %or } define <4 x i16> @or_x_and_xy_vector(<4 x i16> %x, <4 x i16> %y) { ; CHECK-LABEL: or_x_and_xy_vector: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(x, and(x, y)) -> x %and = and <4 x i16> %x, %y %or = or <4 x i16> %x, %and ret <4 x i16> %or } define <4 x i16> @or_x_and_yx_vector(<4 x i16> %x, <4 x i16> %y) { ; CHECK-LABEL: or_x_and_yx_vector: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: ret entry: ; fold or(x, and(y, x)) -> x %and = and <4 x i16> %y, %x %or = or <4 x i16> %x, %and ret <4 x i16> %or } ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK-GI: {{.*}} ; CHECK-SD: {{.*}}