11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
22; Zicond with zfinx(implies by zdinx)
3- ; RUN: llc -mtriple=riscv64 -mattr=+zdinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV64ZDINX_ZICOND
4- ; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV64ZDINX_NOZICOND
3+ ; RUN: llc -mtriple=riscv64 -mattr=+zdinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZDINX_ZICOND, RV64ZDINX_ZICOND
4+ ; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZDINX_NOZICOND, RV64ZDINX_NOZICOND
55
66; Zicond with zfinx(implies by zhinx)
7- ; RUN: llc -mtriple=riscv64 -mattr=+zhinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV64ZHINX_ZICOND
7+ ; RUN: llc -mtriple=riscv64 -mattr=+zhinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZHINX_ZICOND, RV64ZHINX_ZICOND
88
99; Baseline with classic FP registers (no *inx); zicond select should NOT trigger
1010; RUN: llc -mtriple=riscv64 -mattr=+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefix=RV64FD
1111
1212; Check same optimize work on 32bit machine
13- ; RUN: llc -mtriple=riscv32 -mattr=+zfinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV32ZFINX_ZICOND
13+ ; RUN: llc -mtriple=riscv32 -mattr=+zfinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZHINX_ZICOND, RV32ZFINX_ZICOND
1414; RUN: llc -mtriple=riscv32 -mattr=+zfinx -verify-machineinstrs < %s | FileCheck %s --check-prefix=RV32ZFINX_NOZICOND
15- ; RUN: llc -mtriple=riscv32 -mattr=+zdinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV32ZDINX_ZICOND
16- ; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s | FileCheck %s --check-prefix= RV32ZDINX_NOZICOND
15+ ; RUN: llc -mtriple=riscv32 -mattr=+zdinx,+zicond -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZDINX_ZICOND, RV32ZDINX_ZICOND
16+ ; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZDINX_NOZICOND, RV32ZDINX_NOZICOND
1717
1818; This test checks that floating-point SELECT is lowered through integer
1919; SELECT (and thus to Zicond czero.* sequence) when FP values live in GPRs
2525; -----------------------------------------------------------------------------
2626
2727define float @select_f32_i1 (i1 %cond , float %t , float %f ) nounwind {
28- ; RV64ZDINX_ZICOND -LABEL: select_f32_i1:
29- ; RV64ZDINX_ZICOND : # %bb.0: # %entry
30- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
31- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
32- ; RV64ZDINX_ZICOND -NEXT: andi a0, a0, 1
33- ; RV64ZDINX_ZICOND -NEXT: czero.nez a2, a2, a0
34- ; RV64ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
35- ; RV64ZDINX_ZICOND -NEXT: or a0, a0, a2
36- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
37- ; RV64ZDINX_ZICOND -NEXT: ret
38- ;
39- ; RV64ZDINX_NOZICOND -LABEL: select_f32_i1:
40- ; RV64ZDINX_NOZICOND : # %bb.0: # %entry
41- ; RV64ZDINX_NOZICOND -NEXT: andi a3, a0, 1
42- ; RV64ZDINX_NOZICOND -NEXT: mv a0, a1
43- ; RV64ZDINX_NOZICOND -NEXT: bnez a3, .LBB0_2
44- ; RV64ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
45- ; RV64ZDINX_NOZICOND -NEXT: mv a0, a2
46- ; RV64ZDINX_NOZICOND -NEXT: .LBB0_2: # %entry
47- ; RV64ZDINX_NOZICOND -NEXT: ret
48- ;
49- ; RV64ZHINX_ZICOND -LABEL: select_f32_i1:
50- ; RV64ZHINX_ZICOND : # %bb.0: # %entry
51- ; RV64ZHINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
52- ; RV64ZHINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
53- ; RV64ZHINX_ZICOND -NEXT: andi a0, a0, 1
54- ; RV64ZHINX_ZICOND -NEXT: czero.nez a2, a2, a0
55- ; RV64ZHINX_ZICOND -NEXT: czero.eqz a0, a1, a0
56- ; RV64ZHINX_ZICOND -NEXT: or a0, a0, a2
57- ; RV64ZHINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
58- ; RV64ZHINX_ZICOND -NEXT: ret
28+ ; ZDINX_ZICOND -LABEL: select_f32_i1:
29+ ; ZDINX_ZICOND : # %bb.0: # %entry
30+ ; ZDINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
31+ ; ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
32+ ; ZDINX_ZICOND -NEXT: andi a0, a0, 1
33+ ; ZDINX_ZICOND -NEXT: czero.nez a2, a2, a0
34+ ; ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
35+ ; ZDINX_ZICOND -NEXT: or a0, a0, a2
36+ ; ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
37+ ; ZDINX_ZICOND -NEXT: ret
38+ ;
39+ ; ZDINX_NOZICOND -LABEL: select_f32_i1:
40+ ; ZDINX_NOZICOND : # %bb.0: # %entry
41+ ; ZDINX_NOZICOND -NEXT: andi a3, a0, 1
42+ ; ZDINX_NOZICOND -NEXT: mv a0, a1
43+ ; ZDINX_NOZICOND -NEXT: bnez a3, .LBB0_2
44+ ; ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
45+ ; ZDINX_NOZICOND -NEXT: mv a0, a2
46+ ; ZDINX_NOZICOND -NEXT: .LBB0_2: # %entry
47+ ; ZDINX_NOZICOND -NEXT: ret
48+ ;
49+ ; ZHINX_ZICOND -LABEL: select_f32_i1:
50+ ; ZHINX_ZICOND : # %bb.0: # %entry
51+ ; ZHINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
52+ ; ZHINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
53+ ; ZHINX_ZICOND -NEXT: andi a0, a0, 1
54+ ; ZHINX_ZICOND -NEXT: czero.nez a2, a2, a0
55+ ; ZHINX_ZICOND -NEXT: czero.eqz a0, a1, a0
56+ ; ZHINX_ZICOND -NEXT: or a0, a0, a2
57+ ; ZHINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
58+ ; ZHINX_ZICOND -NEXT: ret
5959;
6060; RV64FD-LABEL: select_f32_i1:
6161; RV64FD: # %bb.0: # %entry
@@ -66,17 +66,6 @@ define float @select_f32_i1(i1 %cond, float %t, float %f) nounwind {
6666; RV64FD-NEXT: .LBB0_2: # %entry
6767; RV64FD-NEXT: ret
6868;
69- ; RV32ZFINX_ZICOND-LABEL: select_f32_i1:
70- ; RV32ZFINX_ZICOND: # %bb.0: # %entry
71- ; RV32ZFINX_ZICOND-NEXT: # kill: def $x12_w killed $x12_w def $x12
72- ; RV32ZFINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
73- ; RV32ZFINX_ZICOND-NEXT: andi a0, a0, 1
74- ; RV32ZFINX_ZICOND-NEXT: czero.nez a2, a2, a0
75- ; RV32ZFINX_ZICOND-NEXT: czero.eqz a0, a1, a0
76- ; RV32ZFINX_ZICOND-NEXT: or a0, a0, a2
77- ; RV32ZFINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
78- ; RV32ZFINX_ZICOND-NEXT: ret
79- ;
8069; RV32ZFINX_NOZICOND-LABEL: select_f32_i1:
8170; RV32ZFINX_NOZICOND: # %bb.0: # %entry
8271; RV32ZFINX_NOZICOND-NEXT: andi a3, a0, 1
@@ -86,27 +75,6 @@ define float @select_f32_i1(i1 %cond, float %t, float %f) nounwind {
8675; RV32ZFINX_NOZICOND-NEXT: mv a0, a2
8776; RV32ZFINX_NOZICOND-NEXT: .LBB0_2: # %entry
8877; RV32ZFINX_NOZICOND-NEXT: ret
89- ;
90- ; RV32ZDINX_ZICOND-LABEL: select_f32_i1:
91- ; RV32ZDINX_ZICOND: # %bb.0: # %entry
92- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x12_w killed $x12_w def $x12
93- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
94- ; RV32ZDINX_ZICOND-NEXT: andi a0, a0, 1
95- ; RV32ZDINX_ZICOND-NEXT: czero.nez a2, a2, a0
96- ; RV32ZDINX_ZICOND-NEXT: czero.eqz a0, a1, a0
97- ; RV32ZDINX_ZICOND-NEXT: or a0, a0, a2
98- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
99- ; RV32ZDINX_ZICOND-NEXT: ret
100- ;
101- ; RV32ZDINX_NOZICOND-LABEL: select_f32_i1:
102- ; RV32ZDINX_NOZICOND: # %bb.0: # %entry
103- ; RV32ZDINX_NOZICOND-NEXT: andi a3, a0, 1
104- ; RV32ZDINX_NOZICOND-NEXT: mv a0, a1
105- ; RV32ZDINX_NOZICOND-NEXT: bnez a3, .LBB0_2
106- ; RV32ZDINX_NOZICOND-NEXT: # %bb.1: # %entry
107- ; RV32ZDINX_NOZICOND-NEXT: mv a0, a2
108- ; RV32ZDINX_NOZICOND-NEXT: .LBB0_2: # %entry
109- ; RV32ZDINX_NOZICOND-NEXT: ret
11078entry:
11179 %sel = select i1 %cond , float %t , float %f
11280 ret float %sel
@@ -353,32 +321,32 @@ entry:
353321; -----------------------------------------------------------------------------
354322
355323define dso_local noundef half @select_half_i1 (i1 %cond , half %a , half %b ) nounwind {
356- ; RV64ZDINX_ZICOND -LABEL: select_half_i1:
357- ; RV64ZDINX_ZICOND : # %bb.0: # %entry
358- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
359- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
360- ; RV64ZDINX_ZICOND -NEXT: andi a0, a0, 1
361- ; RV64ZDINX_ZICOND -NEXT: czero.nez a2, a2, a0
362- ; RV64ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
363- ; RV64ZDINX_ZICOND -NEXT: or a0, a0, a2
364- ; RV64ZDINX_ZICOND -NEXT: lui a1, 1048560
365- ; RV64ZDINX_ZICOND -NEXT: or a0, a0, a1
366- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
367- ; RV64ZDINX_ZICOND -NEXT: ret
368- ;
369- ; RV64ZDINX_NOZICOND -LABEL: select_half_i1:
370- ; RV64ZDINX_NOZICOND : # %bb.0: # %entry
371- ; RV64ZDINX_NOZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
372- ; RV64ZDINX_NOZICOND -NEXT: andi a0, a0, 1
373- ; RV64ZDINX_NOZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
374- ; RV64ZDINX_NOZICOND -NEXT: bnez a0, .LBB3_2
375- ; RV64ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
376- ; RV64ZDINX_NOZICOND -NEXT: mv a1, a2
377- ; RV64ZDINX_NOZICOND -NEXT: .LBB3_2: # %entry
378- ; RV64ZDINX_NOZICOND -NEXT: lui a0, 1048560
379- ; RV64ZDINX_NOZICOND -NEXT: or a0, a1, a0
380- ; RV64ZDINX_NOZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
381- ; RV64ZDINX_NOZICOND -NEXT: ret
324+ ; ZDINX_ZICOND -LABEL: select_half_i1:
325+ ; ZDINX_ZICOND : # %bb.0: # %entry
326+ ; ZDINX_ZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
327+ ; ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
328+ ; ZDINX_ZICOND -NEXT: andi a0, a0, 1
329+ ; ZDINX_ZICOND -NEXT: czero.nez a2, a2, a0
330+ ; ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
331+ ; ZDINX_ZICOND -NEXT: or a0, a0, a2
332+ ; ZDINX_ZICOND -NEXT: lui a1, 1048560
333+ ; ZDINX_ZICOND -NEXT: or a0, a0, a1
334+ ; ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
335+ ; ZDINX_ZICOND -NEXT: ret
336+ ;
337+ ; ZDINX_NOZICOND -LABEL: select_half_i1:
338+ ; ZDINX_NOZICOND : # %bb.0: # %entry
339+ ; ZDINX_NOZICOND -NEXT: # kill: def $x12_w killed $x12_w def $x12
340+ ; ZDINX_NOZICOND -NEXT: andi a0, a0, 1
341+ ; ZDINX_NOZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
342+ ; ZDINX_NOZICOND -NEXT: bnez a0, .LBB3_2
343+ ; ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
344+ ; ZDINX_NOZICOND -NEXT: mv a1, a2
345+ ; ZDINX_NOZICOND -NEXT: .LBB3_2: # %entry
346+ ; ZDINX_NOZICOND -NEXT: lui a0, 1048560
347+ ; ZDINX_NOZICOND -NEXT: or a0, a1, a0
348+ ; ZDINX_NOZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
349+ ; ZDINX_NOZICOND -NEXT: ret
382350;
383351; RV64ZHINX_ZICOND-LABEL: select_half_i1:
384352; RV64ZHINX_ZICOND: # %bb.0: # %entry
@@ -432,33 +400,6 @@ define dso_local noundef half @select_half_i1(i1 %cond, half %a, half %b) nounwi
432400; RV32ZFINX_NOZICOND-NEXT: or a0, a1, a0
433401; RV32ZFINX_NOZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
434402; RV32ZFINX_NOZICOND-NEXT: ret
435- ;
436- ; RV32ZDINX_ZICOND-LABEL: select_half_i1:
437- ; RV32ZDINX_ZICOND: # %bb.0: # %entry
438- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x12_w killed $x12_w def $x12
439- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
440- ; RV32ZDINX_ZICOND-NEXT: andi a0, a0, 1
441- ; RV32ZDINX_ZICOND-NEXT: czero.nez a2, a2, a0
442- ; RV32ZDINX_ZICOND-NEXT: czero.eqz a0, a1, a0
443- ; RV32ZDINX_ZICOND-NEXT: or a0, a0, a2
444- ; RV32ZDINX_ZICOND-NEXT: lui a1, 1048560
445- ; RV32ZDINX_ZICOND-NEXT: or a0, a0, a1
446- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
447- ; RV32ZDINX_ZICOND-NEXT: ret
448- ;
449- ; RV32ZDINX_NOZICOND-LABEL: select_half_i1:
450- ; RV32ZDINX_NOZICOND: # %bb.0: # %entry
451- ; RV32ZDINX_NOZICOND-NEXT: # kill: def $x12_w killed $x12_w def $x12
452- ; RV32ZDINX_NOZICOND-NEXT: andi a0, a0, 1
453- ; RV32ZDINX_NOZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
454- ; RV32ZDINX_NOZICOND-NEXT: bnez a0, .LBB3_2
455- ; RV32ZDINX_NOZICOND-NEXT: # %bb.1: # %entry
456- ; RV32ZDINX_NOZICOND-NEXT: mv a1, a2
457- ; RV32ZDINX_NOZICOND-NEXT: .LBB3_2: # %entry
458- ; RV32ZDINX_NOZICOND-NEXT: lui a0, 1048560
459- ; RV32ZDINX_NOZICOND-NEXT: or a0, a1, a0
460- ; RV32ZDINX_NOZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
461- ; RV32ZDINX_NOZICOND-NEXT: ret
462403entry:
463404 %sel = select i1 %cond , half %a , half %b
464405 ret half %sel
@@ -468,31 +409,31 @@ entry:
468409; Test select with i1 condition and zero ret val (cond ? a : 0), Zfinx
469410; -----------------------------------------------------------------------------
470411define dso_local noundef float @select_i1_f32_0 (i1 %cond , float %t ) nounwind {
471- ; RV64ZDINX_ZICOND -LABEL: select_i1_f32_0:
472- ; RV64ZDINX_ZICOND : # %bb.0: # %entry
473- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
474- ; RV64ZDINX_ZICOND -NEXT: andi a0, a0, 1
475- ; RV64ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
476- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
477- ; RV64ZDINX_ZICOND -NEXT: ret
478- ;
479- ; RV64ZDINX_NOZICOND -LABEL: select_i1_f32_0:
480- ; RV64ZDINX_NOZICOND : # %bb.0: # %entry
481- ; RV64ZDINX_NOZICOND -NEXT: andi a2, a0, 1
482- ; RV64ZDINX_NOZICOND -NEXT: mv a0, a1
483- ; RV64ZDINX_NOZICOND -NEXT: bnez a2, .LBB4_2
484- ; RV64ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
485- ; RV64ZDINX_NOZICOND -NEXT: li a0, 0
486- ; RV64ZDINX_NOZICOND -NEXT: .LBB4_2: # %entry
487- ; RV64ZDINX_NOZICOND -NEXT: ret
488- ;
489- ; RV64ZHINX_ZICOND -LABEL: select_i1_f32_0:
490- ; RV64ZHINX_ZICOND : # %bb.0: # %entry
491- ; RV64ZHINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
492- ; RV64ZHINX_ZICOND -NEXT: andi a0, a0, 1
493- ; RV64ZHINX_ZICOND -NEXT: czero.eqz a0, a1, a0
494- ; RV64ZHINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
495- ; RV64ZHINX_ZICOND -NEXT: ret
412+ ; ZDINX_ZICOND -LABEL: select_i1_f32_0:
413+ ; ZDINX_ZICOND : # %bb.0: # %entry
414+ ; ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
415+ ; ZDINX_ZICOND -NEXT: andi a0, a0, 1
416+ ; ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
417+ ; ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
418+ ; ZDINX_ZICOND -NEXT: ret
419+ ;
420+ ; ZDINX_NOZICOND -LABEL: select_i1_f32_0:
421+ ; ZDINX_NOZICOND : # %bb.0: # %entry
422+ ; ZDINX_NOZICOND -NEXT: andi a2, a0, 1
423+ ; ZDINX_NOZICOND -NEXT: mv a0, a1
424+ ; ZDINX_NOZICOND -NEXT: bnez a2, .LBB4_2
425+ ; ZDINX_NOZICOND -NEXT: # %bb.1: # %entry
426+ ; ZDINX_NOZICOND -NEXT: li a0, 0
427+ ; ZDINX_NOZICOND -NEXT: .LBB4_2: # %entry
428+ ; ZDINX_NOZICOND -NEXT: ret
429+ ;
430+ ; ZHINX_ZICOND -LABEL: select_i1_f32_0:
431+ ; ZHINX_ZICOND : # %bb.0: # %entry
432+ ; ZHINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
433+ ; ZHINX_ZICOND -NEXT: andi a0, a0, 1
434+ ; ZHINX_ZICOND -NEXT: czero.eqz a0, a1, a0
435+ ; ZHINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
436+ ; ZHINX_ZICOND -NEXT: ret
496437;
497438; RV64FD-LABEL: select_i1_f32_0:
498439; RV64FD: # %bb.0: # %entry
@@ -503,14 +444,6 @@ define dso_local noundef float @select_i1_f32_0(i1 %cond, float %t) nounwind {
503444; RV64FD-NEXT: .LBB4_2: # %entry
504445; RV64FD-NEXT: ret
505446;
506- ; RV32ZFINX_ZICOND-LABEL: select_i1_f32_0:
507- ; RV32ZFINX_ZICOND: # %bb.0: # %entry
508- ; RV32ZFINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
509- ; RV32ZFINX_ZICOND-NEXT: andi a0, a0, 1
510- ; RV32ZFINX_ZICOND-NEXT: czero.eqz a0, a1, a0
511- ; RV32ZFINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
512- ; RV32ZFINX_ZICOND-NEXT: ret
513- ;
514447; RV32ZFINX_NOZICOND-LABEL: select_i1_f32_0:
515448; RV32ZFINX_NOZICOND: # %bb.0: # %entry
516449; RV32ZFINX_NOZICOND-NEXT: andi a2, a0, 1
@@ -520,24 +453,6 @@ define dso_local noundef float @select_i1_f32_0(i1 %cond, float %t) nounwind {
520453; RV32ZFINX_NOZICOND-NEXT: li a0, 0
521454; RV32ZFINX_NOZICOND-NEXT: .LBB4_2: # %entry
522455; RV32ZFINX_NOZICOND-NEXT: ret
523- ;
524- ; RV32ZDINX_ZICOND-LABEL: select_i1_f32_0:
525- ; RV32ZDINX_ZICOND: # %bb.0: # %entry
526- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
527- ; RV32ZDINX_ZICOND-NEXT: andi a0, a0, 1
528- ; RV32ZDINX_ZICOND-NEXT: czero.eqz a0, a1, a0
529- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
530- ; RV32ZDINX_ZICOND-NEXT: ret
531- ;
532- ; RV32ZDINX_NOZICOND-LABEL: select_i1_f32_0:
533- ; RV32ZDINX_NOZICOND: # %bb.0: # %entry
534- ; RV32ZDINX_NOZICOND-NEXT: andi a2, a0, 1
535- ; RV32ZDINX_NOZICOND-NEXT: mv a0, a1
536- ; RV32ZDINX_NOZICOND-NEXT: bnez a2, .LBB4_2
537- ; RV32ZDINX_NOZICOND-NEXT: # %bb.1: # %entry
538- ; RV32ZDINX_NOZICOND-NEXT: li a0, 0
539- ; RV32ZDINX_NOZICOND-NEXT: .LBB4_2: # %entry
540- ; RV32ZDINX_NOZICOND-NEXT: ret
541456entry:
542457 %sel = select i1 %cond , float %t , float 0 .000000e+00
543458 ret float %sel
@@ -547,15 +462,15 @@ entry:
547462; Test select with i1 condition and zero ret val for half fp (cond ? a : 0)
548463; -----------------------------------------------------------------------------
549464define dso_local noundef half @select_i1_half_0 (i1 %cond , half %val ) nounwind {
550- ; RV64ZDINX_ZICOND -LABEL: select_i1_half_0:
551- ; RV64ZDINX_ZICOND : # %bb.0: # %entry
552- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
553- ; RV64ZDINX_ZICOND -NEXT: andi a0, a0, 1
554- ; RV64ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
555- ; RV64ZDINX_ZICOND -NEXT: lui a1, 1048560
556- ; RV64ZDINX_ZICOND -NEXT: or a0, a0, a1
557- ; RV64ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
558- ; RV64ZDINX_ZICOND -NEXT: ret
465+ ; ZDINX_ZICOND -LABEL: select_i1_half_0:
466+ ; ZDINX_ZICOND : # %bb.0: # %entry
467+ ; ZDINX_ZICOND -NEXT: # kill: def $x11_w killed $x11_w def $x11
468+ ; ZDINX_ZICOND -NEXT: andi a0, a0, 1
469+ ; ZDINX_ZICOND -NEXT: czero.eqz a0, a1, a0
470+ ; ZDINX_ZICOND -NEXT: lui a1, 1048560
471+ ; ZDINX_ZICOND -NEXT: or a0, a0, a1
472+ ; ZDINX_ZICOND -NEXT: # kill: def $x10_w killed $x10_w killed $x10
473+ ; ZDINX_ZICOND -NEXT: ret
559474;
560475; RV64ZDINX_NOZICOND-LABEL: select_i1_half_0:
561476; RV64ZDINX_NOZICOND: # %bb.0: # %entry
@@ -608,16 +523,6 @@ define dso_local noundef half @select_i1_half_0(i1 %cond, half %val) nounwind {
608523; RV32ZFINX_NOZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
609524; RV32ZFINX_NOZICOND-NEXT: ret
610525;
611- ; RV32ZDINX_ZICOND-LABEL: select_i1_half_0:
612- ; RV32ZDINX_ZICOND: # %bb.0: # %entry
613- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
614- ; RV32ZDINX_ZICOND-NEXT: andi a0, a0, 1
615- ; RV32ZDINX_ZICOND-NEXT: czero.eqz a0, a1, a0
616- ; RV32ZDINX_ZICOND-NEXT: lui a1, 1048560
617- ; RV32ZDINX_ZICOND-NEXT: or a0, a0, a1
618- ; RV32ZDINX_ZICOND-NEXT: # kill: def $x10_w killed $x10_w killed $x10
619- ; RV32ZDINX_ZICOND-NEXT: ret
620- ;
621526; RV32ZDINX_NOZICOND-LABEL: select_i1_half_0:
622527; RV32ZDINX_NOZICOND: # %bb.0: # %entry
623528; RV32ZDINX_NOZICOND-NEXT: # kill: def $x11_w killed $x11_w def $x11
0 commit comments