1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
2
- ; RUN: llc --mtriple=loongarch32 -mattr=+32s,+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA32
3
- ; RUN: llc --mtriple=loongarch64 -mattr=+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA64
2
+ ; RUN: llc --mtriple=loongarch32 -mattr=+32s,+lasx < %s | FileCheck %s
3
+ ; RUN: llc --mtriple=loongarch64 -mattr=+lasx < %s | FileCheck %s
4
4
5
5
define <8 x float > @fadd_elt0_v8f32 (float %a ) nounwind {
6
6
; CHECK-LABEL: fadd_elt0_v8f32:
7
7
; CHECK: # %bb.0: # %entry
8
- ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
9
- ; CHECK-NEXT: lu12i.w $a0, 260096
10
- ; CHECK-NEXT: xvreplgr2vr.w $xr1, $a0
11
- ; CHECK-NEXT: xvfadd.s $xr0, $xr0, $xr1
8
+ ; CHECK-NEXT: vldi $vr1, -1168
9
+ ; CHECK-NEXT: fadd.s $fa0, $fa0, $fa1
12
10
; CHECK-NEXT: ret
13
11
entry:
14
12
%b = insertelement <8 x float > poison, float %a , i32 0
@@ -17,20 +15,11 @@ entry:
17
15
}
18
16
19
17
define <4 x double > @fadd_elt0_v4f64 (double %a ) nounwind {
20
- ; LA32-LABEL: fadd_elt0_v4f64:
21
- ; LA32: # %bb.0: # %entry
22
- ; LA32-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
23
- ; LA32-NEXT: vldi $vr1, -912
24
- ; LA32-NEXT: xvfadd.d $xr0, $xr0, $xr1
25
- ; LA32-NEXT: ret
26
- ;
27
- ; LA64-LABEL: fadd_elt0_v4f64:
28
- ; LA64: # %bb.0: # %entry
29
- ; LA64-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
30
- ; LA64-NEXT: lu52i.d $a0, $zero, 1023
31
- ; LA64-NEXT: xvreplgr2vr.d $xr1, $a0
32
- ; LA64-NEXT: xvfadd.d $xr0, $xr0, $xr1
33
- ; LA64-NEXT: ret
18
+ ; CHECK-LABEL: fadd_elt0_v4f64:
19
+ ; CHECK: # %bb.0: # %entry
20
+ ; CHECK-NEXT: vldi $vr1, -912
21
+ ; CHECK-NEXT: fadd.d $fa0, $fa0, $fa1
22
+ ; CHECK-NEXT: ret
34
23
entry:
35
24
%b = insertelement <4 x double > poison, double %a , i32 0
36
25
%c = fadd <4 x double > %b , <double 1 .0 , double poison, double poison, double poison>
@@ -40,11 +29,8 @@ entry:
40
29
define <8 x float > @fsub_splat_v8f32 (float %a , float %b ) nounwind {
41
30
; CHECK-LABEL: fsub_splat_v8f32:
42
31
; CHECK: # %bb.0: # %entry
43
- ; CHECK-NEXT: # kill: def $f1 killed $f1 def $vr1
44
- ; CHECK-NEXT: # kill: def $f0 killed $f0 def $vr0
45
- ; CHECK-NEXT: vfsub.s $vr0, $vr0, $vr1
46
- ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 68
47
- ; CHECK-NEXT: xvrepl128vei.w $xr0, $xr0, 0
32
+ ; CHECK-NEXT: fsub.s $fa0, $fa0, $fa1
33
+ ; CHECK-NEXT: xvreplve0.w $xr0, $xr0
48
34
; CHECK-NEXT: ret
49
35
entry:
50
36
%insa = insertelement <8 x float > poison, float %a , i32 0
@@ -56,24 +42,12 @@ entry:
56
42
}
57
43
58
44
define <4 x double > @fsub_splat_v4f64 (double %a ) nounwind {
59
- ; LA32-LABEL: fsub_splat_v4f64:
60
- ; LA32: # %bb.0: # %entry
61
- ; LA32-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
62
- ; LA32-NEXT: vldi $vr1, -784
63
- ; LA32-NEXT: xvfadd.d $xr0, $xr0, $xr1
64
- ; LA32-NEXT: xvpermi.d $xr0, $xr0, 68
65
- ; LA32-NEXT: xvrepl128vei.d $xr0, $xr0, 0
66
- ; LA32-NEXT: ret
67
- ;
68
- ; LA64-LABEL: fsub_splat_v4f64:
69
- ; LA64: # %bb.0: # %entry
70
- ; LA64-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
71
- ; LA64-NEXT: lu52i.d $a0, $zero, -1025
72
- ; LA64-NEXT: xvreplgr2vr.d $xr1, $a0
73
- ; LA64-NEXT: xvfadd.d $xr0, $xr0, $xr1
74
- ; LA64-NEXT: xvpermi.d $xr0, $xr0, 68
75
- ; LA64-NEXT: xvrepl128vei.d $xr0, $xr0, 0
76
- ; LA64-NEXT: ret
45
+ ; CHECK-LABEL: fsub_splat_v4f64:
46
+ ; CHECK: # %bb.0: # %entry
47
+ ; CHECK-NEXT: vldi $vr1, -784
48
+ ; CHECK-NEXT: fadd.d $fa0, $fa0, $fa1
49
+ ; CHECK-NEXT: xvreplve0.d $xr0, $xr0
50
+ ; CHECK-NEXT: ret
77
51
entry:
78
52
%insa = insertelement <4 x double > poison, double %a , i32 0
79
53
%insb = insertelement <4 x double > poison, double 1 .0 , i32 0
0 commit comments