Skip to content

Commit 90bc8c0

Browse files
authored
Merge branch 'llvm:main' into main
2 parents 626ecee + fd85761 commit 90bc8c0

21 files changed

+335
-174
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,6 +2393,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
23932393
setOperationAction(ISD::INSERT_VECTOR_ELT, MVT::bf16, Custom);
23942394
for (auto VT : {MVT::v8bf16, MVT::v16bf16}) {
23952395
setF16Action(VT, Expand);
2396+
if (!Subtarget.hasBF16())
2397+
setOperationAction(ISD::VSELECT, VT, Custom);
23962398
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
23972399
setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
23982400
setOperationAction(ISD::INSERT_SUBVECTOR, VT, Legal);

llvm/lib/Transforms/InstCombine/InstructionCombining.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3753,7 +3753,9 @@ Instruction *InstCombinerImpl::visitBranchInst(BranchInst &BI) {
37533753
}
37543754

37553755
// Replace all dominated uses of the condition with true/false
3756-
if (BI.getSuccessor(0) != BI.getSuccessor(1)) {
3756+
// Ignore constant expressions to avoid iterating over uses on other
3757+
// functions.
3758+
if (!isa<Constant>(Cond) && BI.getSuccessor(0) != BI.getSuccessor(1)) {
37573759
for (auto &U : make_early_inc_range(Cond->uses())) {
37583760
BasicBlockEdge Edge0(BI.getParent(), BI.getSuccessor(0));
37593761
if (DT.dominates(Edge0, U)) {

llvm/test/CodeGen/AArch64/cvt-fp-int-fp.ll

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ define double @t1_strict(double %x) #0 {
131131
; CHECK-NEXT: ret
132132
entry:
133133
%conv = call i64 @llvm.experimental.constrained.fptosi.i64.f64(double %x, metadata !"fpexcept.strict") #0
134-
%conv1 = call double @llvm.experimental.constrained.sitofp.i64.f64(i64 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
134+
%conv1 = call double @llvm.experimental.constrained.sitofp.f64.i64(i64 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
135135
ret double %conv1
136136
}
137137

@@ -143,7 +143,7 @@ define float @t2_strict(float %x) #0 {
143143
; CHECK-NEXT: ret
144144
entry:
145145
%conv = call i32 @llvm.experimental.constrained.fptosi.i32.f32(float %x, metadata !"fpexcept.strict") #0
146-
%conv1 = call float @llvm.experimental.constrained.sitofp.i32.f32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
146+
%conv1 = call float @llvm.experimental.constrained.sitofp.f32.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
147147
ret float %conv1
148148
}
149149

@@ -155,7 +155,7 @@ define half @t3_strict(half %x) #0 {
155155
; CHECK-NEXT: ret
156156
entry:
157157
%conv = call i32 @llvm.experimental.constrained.fptosi.i32.f16(half %x, metadata !"fpexcept.strict") #0
158-
%conv1 = call half @llvm.experimental.constrained.sitofp.i32.f16(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
158+
%conv1 = call half @llvm.experimental.constrained.sitofp.f16.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
159159
ret half %conv1
160160
}
161161

@@ -167,7 +167,7 @@ define double @t4_strict(double %x) #0 {
167167
; CHECK-NEXT: ret
168168
entry:
169169
%conv = call i64 @llvm.experimental.constrained.fptoui.i64.f64(double %x, metadata !"fpexcept.strict") #0
170-
%conv1 = call double @llvm.experimental.constrained.uitofp.i64.f64(i64 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
170+
%conv1 = call double @llvm.experimental.constrained.uitofp.f64.i64(i64 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
171171
ret double %conv1
172172
}
173173

@@ -179,7 +179,7 @@ define float @t5_strict(float %x) #0 {
179179
; CHECK-NEXT: ret
180180
entry:
181181
%conv = call i32 @llvm.experimental.constrained.fptoui.i32.f32(float %x, metadata !"fpexcept.strict") #0
182-
%conv1 = call float @llvm.experimental.constrained.uitofp.i32.f32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
182+
%conv1 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
183183
ret float %conv1
184184
}
185185

@@ -191,7 +191,7 @@ define half @t6_strict(half %x) #0 {
191191
; CHECK-NEXT: ret
192192
entry:
193193
%conv = call i32 @llvm.experimental.constrained.fptoui.i32.f16(half %x, metadata !"fpexcept.strict") #0
194-
%conv1 = call half @llvm.experimental.constrained.uitofp.i32.f16(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
194+
%conv1 = call half @llvm.experimental.constrained.uitofp.f16.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
195195
ret half %conv1
196196
}
197197

@@ -216,7 +216,7 @@ define bfloat @t7_strict(bfloat %x) #0 {
216216
; CHECK-NEXT: ret
217217
entry:
218218
%conv = call i32 @llvm.experimental.constrained.fptosi.i32.bf16(bfloat %x, metadata !"fpexcept.strict") #0
219-
%conv1 = call bfloat @llvm.experimental.constrained.sitofp.i32.bf16(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
219+
%conv1 = call bfloat @llvm.experimental.constrained.sitofp.bf16.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
220220
ret bfloat %conv1
221221
}
222222

@@ -241,7 +241,7 @@ define bfloat @t8_strict(bfloat %x) #0 {
241241
; CHECK-NEXT: ret
242242
entry:
243243
%conv = call i32 @llvm.experimental.constrained.fptoui.i32.bf16(bfloat %x, metadata !"fpexcept.strict") #0
244-
%conv1 = call bfloat @llvm.experimental.constrained.uitofp.i32.bf16(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
244+
%conv1 = call bfloat @llvm.experimental.constrained.uitofp.bf16.i32(i32 %conv, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
245245
ret bfloat %conv1
246246
}
247247

@@ -255,11 +255,11 @@ declare i32 @llvm.experimental.constrained.fptosi.i32.f32(float, metadata)
255255
declare i32 @llvm.experimental.constrained.fptoui.i32.f32(float, metadata)
256256
declare i64 @llvm.experimental.constrained.fptosi.i64.f64(double, metadata)
257257
declare i64 @llvm.experimental.constrained.fptoui.i64.f64(double, metadata)
258-
declare bfloat @llvm.experimental.constrained.sitofp.i32.bf16(i32, metadata, metadata)
259-
declare bfloat @llvm.experimental.constrained.uitofp.i32.bf16(i32, metadata, metadata)
260-
declare half @llvm.experimental.constrained.sitofp.i32.f16(i32, metadata, metadata)
261-
declare half @llvm.experimental.constrained.uitofp.i32.f16(i32, metadata, metadata)
262-
declare float @llvm.experimental.constrained.sitofp.i32.f32(i32, metadata, metadata)
263-
declare float @llvm.experimental.constrained.uitofp.i32.f32(i32, metadata, metadata)
264-
declare double @llvm.experimental.constrained.sitofp.i64.f64(i64, metadata, metadata)
265-
declare double @llvm.experimental.constrained.uitofp.i64.f64(i64, metadata, metadata)
258+
declare bfloat @llvm.experimental.constrained.sitofp.bf16.i32(i32, metadata, metadata)
259+
declare bfloat @llvm.experimental.constrained.uitofp.bf16.i32(i32, metadata, metadata)
260+
declare half @llvm.experimental.constrained.sitofp.f16.i32(i32, metadata, metadata)
261+
declare half @llvm.experimental.constrained.uitofp.f16.i32(i32, metadata, metadata)
262+
declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)
263+
declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)
264+
declare double @llvm.experimental.constrained.sitofp.f64.i64(i64, metadata, metadata)
265+
declare double @llvm.experimental.constrained.uitofp.f64.i64(i64, metadata, metadata)

llvm/test/CodeGen/AArch64/fp-intrinsics-fp16.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ define i32 @lrint_f16(half %x) #0 {
595595
; CHECK-FP16-NEXT: frintx h0, h0
596596
; CHECK-FP16-NEXT: fcvtzs w0, h0
597597
; CHECK-FP16-NEXT: ret
598-
%val = call i32 @llvm.experimental.constrained.lrint.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
598+
%val = call i32 @llvm.experimental.constrained.lrint.i32.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
599599
ret i32 %val
600600
}
601601

@@ -612,7 +612,7 @@ define i64 @llrint_f16(half %x) #0 {
612612
; CHECK-FP16-NEXT: frintx h0, h0
613613
; CHECK-FP16-NEXT: fcvtzs x0, h0
614614
; CHECK-FP16-NEXT: ret
615-
%val = call i64 @llvm.experimental.constrained.llrint.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
615+
%val = call i64 @llvm.experimental.constrained.llrint.i64.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") #0
616616
ret i64 %val
617617
}
618618

@@ -693,7 +693,7 @@ define i32 @lround_f16(half %x) #0 {
693693
; CHECK-FP16: // %bb.0:
694694
; CHECK-FP16-NEXT: fcvtas w0, h0
695695
; CHECK-FP16-NEXT: ret
696-
%val = call i32 @llvm.experimental.constrained.lround.f16(half %x, metadata !"fpexcept.strict") #0
696+
%val = call i32 @llvm.experimental.constrained.lround.i32.f16(half %x, metadata !"fpexcept.strict") #0
697697
ret i32 %val
698698
}
699699

@@ -708,7 +708,7 @@ define i64 @llround_f16(half %x) #0 {
708708
; CHECK-FP16: // %bb.0:
709709
; CHECK-FP16-NEXT: fcvtas x0, h0
710710
; CHECK-FP16-NEXT: ret
711-
%val = call i64 @llvm.experimental.constrained.llround.f16(half %x, metadata !"fpexcept.strict") #0
711+
%val = call i64 @llvm.experimental.constrained.llround.i64.f16(half %x, metadata !"fpexcept.strict") #0
712712
ret i64 %val
713713
}
714714

@@ -1277,14 +1277,14 @@ declare half @llvm.experimental.constrained.exp.f16(half, metadata, metadata)
12771277
declare half @llvm.experimental.constrained.exp2.f16(half, metadata, metadata)
12781278
declare half @llvm.experimental.constrained.rint.f16(half, metadata, metadata)
12791279
declare half @llvm.experimental.constrained.nearbyint.f16(half, metadata, metadata)
1280-
declare i32 @llvm.experimental.constrained.lrint.f16(half, metadata, metadata)
1281-
declare i64 @llvm.experimental.constrained.llrint.f16(half, metadata, metadata)
1280+
declare i32 @llvm.experimental.constrained.lrint.i32.f16(half, metadata, metadata)
1281+
declare i64 @llvm.experimental.constrained.llrint.i64.f16(half, metadata, metadata)
12821282
declare half @llvm.experimental.constrained.maxnum.f16(half, half, metadata)
12831283
declare half @llvm.experimental.constrained.minnum.f16(half, half, metadata)
12841284
declare half @llvm.experimental.constrained.ceil.f16(half, metadata)
12851285
declare half @llvm.experimental.constrained.floor.f16(half, metadata)
1286-
declare i32 @llvm.experimental.constrained.lround.f16(half, metadata)
1287-
declare i64 @llvm.experimental.constrained.llround.f16(half, metadata)
1286+
declare i32 @llvm.experimental.constrained.lround.i32.f16(half, metadata)
1287+
declare i64 @llvm.experimental.constrained.llround.i64.f16(half, metadata)
12881288
declare half @llvm.experimental.constrained.round.f16(half, metadata)
12891289
declare half @llvm.experimental.constrained.roundeven.f16(half, metadata)
12901290
declare half @llvm.experimental.constrained.trunc.f16(half, metadata)

llvm/test/CodeGen/AArch64/fp-intrinsics-vector.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ define <4 x i1> @fcmps_v4f32(<4 x float> %x, <4 x float> %y) #0 {
279279
; CHECK-NEXT: xtn v0.4h, v4.4s
280280
; CHECK-NEXT: ret
281281
entry:
282-
%val = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x float> %x, <4 x float> %y, metadata !"oeq", metadata !"fpexcept.strict")
282+
%val = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %x, <4 x float> %y, metadata !"oeq", metadata !"fpexcept.strict")
283283
ret <4 x i1> %val
284284
}
285285

@@ -825,8 +825,8 @@ declare <4 x float> @llvm.experimental.constrained.floor.v4f32(<4 x float>, meta
825825
declare <4 x float> @llvm.experimental.constrained.round.v4f32(<4 x float>, metadata)
826826
declare <4 x float> @llvm.experimental.constrained.roundeven.v4f32(<4 x float>, metadata)
827827
declare <4 x float> @llvm.experimental.constrained.trunc.v4f32(<4 x float>, metadata)
828-
declare <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x float>, <4 x float>, metadata, metadata)
829-
declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x float>, <4 x float>, metadata, metadata)
828+
declare <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float>, <4 x float>, metadata, metadata)
829+
declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float>, <4 x float>, metadata, metadata)
830830

831831
declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata)
832832
declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata)

0 commit comments

Comments
 (0)