; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 ; RUN: opt -passes=gvn -S < %s | FileCheck %s define float @merge_nofpclass(ptr %arg, float %arg1) { ; CHECK-LABEL: define float @merge_nofpclass( ; CHECK-SAME: ptr [[ARG:%.*]], float [[ARG1:%.*]]) { ; CHECK-NEXT: [[BB:.*:]] ; CHECK-NEXT: [[NOT_INF:%.*]] = load float, ptr [[ARG]], align 4, !nofpclass [[META0:![0-9]+]] ; CHECK-NEXT: [[ADD:%.*]] = fadd float [[NOT_INF]], [[NOT_INF]] ; CHECK-NEXT: ret float [[ADD]] ; bb: %not.inf = load float, ptr %arg, align 4, !nofpclass !{i32 519} %not.nan = load float, ptr %arg, align 4, !nofpclass !{i32 3} %add = fadd float %not.nan, %not.inf ret float %add } define float @merge_nofpclass_noundef(ptr %arg, float %arg1) { ; CHECK-LABEL: define float @merge_nofpclass_noundef( ; CHECK-SAME: ptr [[ARG:%.*]], float [[ARG1:%.*]]) { ; CHECK-NEXT: [[BB:.*:]] ; CHECK-NEXT: [[NOT_INF:%.*]] = load float, ptr [[ARG]], align 4, !noundef [[META1:![0-9]+]], !nofpclass [[META2:![0-9]+]] ; CHECK-NEXT: [[ADD:%.*]] = fadd float [[NOT_INF]], [[NOT_INF]] ; CHECK-NEXT: ret float [[ADD]] ; bb: %not.inf = load float, ptr %arg, align 4, !noundef !{}, !nofpclass !{i32 519} %not.nan = load float, ptr %arg, align 4, !nofpclass !{i32 3} %add = fadd float %not.nan, %not.inf ret float %add } ;. ; CHECK: [[META0]] = !{i32 3} ; CHECK: [[META1]] = !{} ; CHECK: [[META2]] = !{i32 519} ;.