CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
83 lines
3.0 KiB
Plaintext
83 lines
3.0 KiB
Plaintext
// RUN: fir-opt --canonicalize %s | FileCheck %s
|
|
|
|
// logical_and(false, false) == false
|
|
// CHECK-LABEL: @fold_logical_and_false_false
|
|
func.func @fold_logical_and_false_false() -> !fir.logical<4> {
|
|
%false = arith.constant false
|
|
%lhs = fir.convert %false : (i1) -> !fir.logical<4>
|
|
%rhs = fir.convert %false : (i1) -> !fir.logical<4>
|
|
%res = fir.logical_and %lhs, %rhs : !fir.logical<4>
|
|
// CHECK-NOT: fir.logical_and
|
|
// CHECK: %[[FALSE:.*]] = fir.convert
|
|
// CHECK: return %[[FALSE]] : !fir.logical<4>
|
|
return %res : !fir.logical<4>
|
|
}
|
|
|
|
// logical_and(true, false) == false
|
|
// CHECK-LABEL: @fold_logical_and_true_false
|
|
func.func @fold_logical_and_true_false() -> !fir.logical<4> {
|
|
%true = arith.constant true
|
|
%false = arith.constant false
|
|
%lhs = fir.convert %true : (i1) -> !fir.logical<4>
|
|
%rhs = fir.convert %false : (i1) -> !fir.logical<4>
|
|
%res = fir.logical_and %lhs, %rhs : !fir.logical<4>
|
|
// CHECK-NOT: fir.logical_and
|
|
// CHECK: %[[FALSE:.*]] = arith.constant false
|
|
// CHECK: %[[RHS:.*]] = fir.convert %[[FALSE]] : (i1) -> !fir.logical<4>
|
|
// CHECK: return %[[RHS]] : !fir.logical<4>
|
|
return %res : !fir.logical<4>
|
|
}
|
|
|
|
// logical_and(x, true) -> x
|
|
// CHECK-LABEL: @fold_logical_and_identity
|
|
// CHECK-SAME: (%[[X:.*]]: !fir.logical<4>)
|
|
func.func @fold_logical_and_identity(%x: !fir.logical<4>) -> !fir.logical<4> {
|
|
%true = arith.constant true
|
|
%rhs = fir.convert %true : (i1) -> !fir.logical<4>
|
|
%res = fir.logical_and %x, %rhs : !fir.logical<4>
|
|
// CHECK-NOT: fir.logical_and
|
|
// CHECK: return %[[X]] : !fir.logical<4>
|
|
return %res : !fir.logical<4>
|
|
}
|
|
|
|
// logical_or(true, false) == true
|
|
// CHECK-LABEL: @fold_logical_or_true_false
|
|
func.func @fold_logical_or_true_false() -> !fir.logical<4> {
|
|
%true = arith.constant true
|
|
%false = arith.constant false
|
|
%lhs = fir.convert %true : (i1) -> !fir.logical<4>
|
|
%rhs = fir.convert %false : (i1) -> !fir.logical<4>
|
|
%res = fir.logical_or %lhs, %rhs : !fir.logical<4>
|
|
// CHECK-NOT: fir.logical_or
|
|
// CHECK: %[[TRUE:.*]] = arith.constant true
|
|
// CHECK: %[[LHS:.*]] = fir.convert %[[TRUE]] : (i1) -> !fir.logical<4>
|
|
// CHECK: return %[[LHS]] : !fir.logical<4>
|
|
return %res : !fir.logical<4>
|
|
}
|
|
|
|
// logical_or(x, false) -> x
|
|
// CHECK-LABEL: @fold_logical_or_identity
|
|
// CHECK-SAME: (%[[X:.*]]: !fir.logical<4>)
|
|
func.func @fold_logical_or_identity(%x: !fir.logical<4>) -> !fir.logical<4> {
|
|
%false = arith.constant false
|
|
%rhs = fir.convert %false : (i1) -> !fir.logical<4>
|
|
%res = fir.logical_or %x, %rhs : !fir.logical<4>
|
|
// CHECK-NOT: fir.logical_or
|
|
// CHECK: return %[[X]] : !fir.logical<4>
|
|
return %res : !fir.logical<4>
|
|
}
|
|
|
|
// Fold on integer type: logical_and(1, 0) -> arith.constant 0 : i32
|
|
// CHECK-LABEL: @fold_logical_and_int
|
|
func.func @fold_logical_and_int() -> i32 {
|
|
%c1 = arith.constant 1 : i1
|
|
%c0 = arith.constant 0 : i1
|
|
%lhs = fir.convert %c1 : (i1) -> i32
|
|
%rhs = fir.convert %c0 : (i1) -> i32
|
|
%res = fir.logical_and %lhs, %rhs : i32
|
|
// CHECK-NOT: fir.logical_and
|
|
// CHECK: %[[C:.*]] = arith.constant 0 : i32
|
|
// CHECK: return %[[C]] : i32
|
|
return %res : i32
|
|
}
|