@@ -53,51 +53,52 @@ let Predicates = [IsISAFuture] in {
53
53
54
54
let Predicates = [HasVSX, IsISAFuture] in {
55
55
let mayLoad = 1 in {
56
- def LXVRL : XX1Form_memOp<31, 525, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB),
57
- "lxvrl $XT, $RA, $RB", IIC_LdStLoad, []>;
58
-
59
- def LXVRLL : XX1Form_memOp<31, 557, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB),
60
- "lxvrll $XT, $RA, $RB", IIC_LdStLoad, []>;
61
-
62
- def LXVPRL : XForm_XTp5_XAB5<31, 589, (outs vsrprc:$XTp),
63
- (ins memr:$RA, g8rc:$RB),
64
- "lxvprl $XTp, $RA, $RB", IIC_LdStLFD, []>;
65
-
66
- def LXVPRLL : XForm_XTp5_XAB5<31, 621, (outs vsrprc:$XTp),
67
- (ins memr:$RA, g8rc:$RB),
68
- "lxvprll $XTp, $RA, $RB", IIC_LdStLFD, []>;
56
+ def LXVRL
57
+ : XX1Form_memOp<31, 525, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB),
58
+ "lxvrl $XT, $RA, $RB", IIC_LdStLoad, []>;
59
+ def LXVRLL
60
+ : XX1Form_memOp<31, 557, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB),
61
+ "lxvrll $XT, $RA, $RB", IIC_LdStLoad, []>;
62
+ def LXVPRL
63
+ : XForm_XTp5_XAB5<31, 589, (outs vsrprc:$XTp), (ins memr:$RA, g8rc:$RB),
64
+ "lxvprl $XTp, $RA, $RB", IIC_LdStLFD, []>;
65
+ def LXVPRLL
66
+ : XForm_XTp5_XAB5<31, 621, (outs vsrprc:$XTp), (ins memr:$RA, g8rc:$RB),
67
+ "lxvprll $XTp, $RA, $RB", IIC_LdStLFD, []>;
69
68
}
70
69
71
70
let mayStore = 1 in {
72
- def STXVRL : XX1Form_memOp<31, 653, (outs),
73
- (ins vsrc:$XT, memr:$RA, g8rc:$RB),
74
- "stxvrl $XT, $RA, $RB", IIC_LdStLoad, []>;
75
-
76
- def STXVRLL : XX1Form_memOp<31, 685, (outs),
77
- (ins vsrc:$XT, memr:$RA, g8rc:$RB),
78
- "stxvrll $XT, $RA, $RB", IIC_LdStLoad, []>;
79
-
71
+ def STXVRL
72
+ : XX1Form_memOp<31, 653, (outs), (ins vsrc:$XT, memr:$RA, g8rc:$RB),
73
+ "stxvrl $XT, $RA, $RB", IIC_LdStLoad, []>;
74
+ def STXVRLL
75
+ : XX1Form_memOp<31, 685, (outs), (ins vsrc:$XT, memr:$RA, g8rc:$RB),
76
+ "stxvrll $XT, $RA, $RB", IIC_LdStLoad, []>;
80
77
def STXVPRL : XForm_XTp5_XAB5<31, 717, (outs),
81
78
(ins vsrprc:$XTp, memr:$RA, g8rc:$RB),
82
79
"stxvprl $XTp, $RA, $RB", IIC_LdStLFD, []>;
83
-
84
80
def STXVPRLL : XForm_XTp5_XAB5<31, 749, (outs),
85
81
(ins vsrprc:$XTp, memr:$RA, g8rc:$RB),
86
82
"stxvprll $XTp, $RA, $RB", IIC_LdStLFD, []>;
87
83
}
88
84
}
89
85
90
- // Load VSX Vector with Right Length Left-justified.
91
- def : Pat<(v4i32 (int_ppc_vsx_lxvrl addr:$RA, i64:$RB)), (LXVRL $RA, $RB)>;
92
- def : Pat<(v4i32 (int_ppc_vsx_lxvrll addr:$RA, i64:$RB)), (LXVRLL $RA, $RB)>;
93
- def : Pat<(v256i1 (int_ppc_vsx_lxvprl addr:$RA, i64:$RB)), (LXVPRL $RA, $RB)>;
94
- def : Pat<(v256i1 (int_ppc_vsx_lxvprll addr:$RA, i64:$RB)), (LXVPRLL $RA, $RB)>;
86
+ // Load/Store VSX Vector with Right Length Left-justified.
87
+ // foreach Ty = [v4i32, v2i64, v128i1] in {
88
+ foreach Ty = [v4i32, v2i64] in {
89
+ def : Pat<(Ty (int_ppc_vsx_lxvrl addr:$RA, i64:$RB)),
90
+ (LXVRL memr:$RA, g8rc:$RB)>;
91
+ def : Pat<(Ty (int_ppc_vsx_lxvrll addr:$RA, i64:$RB)),
92
+ (LXVRLL $RA, $RB)>;
93
+ def : Pat<(int_ppc_vsx_stxvrl Ty:$XT, addr:$RA, i64:$RB),
94
+ (STXVRL $XT, $RA, $RB)>;
95
+ def : Pat<(int_ppc_vsx_stxvrll Ty:$XT, addr:$RA, i64:$RB),
96
+ (STXVRLL $XT, $RA, $RB)>;
97
+ }
95
98
96
- // Store VSX Vector with Right Length Left-justified.
97
- def : Pat<(int_ppc_vsx_stxvrl v4i32:$XT, addr:$RA, i64:$RB),
98
- (STXVRL $XT, $RA, $RB)>;
99
- def : Pat<(int_ppc_vsx_stxvrll v4i32:$XT, addr:$RA, i64:$RB),
100
- (STXVRLL $XT, $RA, $RB)>;
99
+ // Load/Store VSX Vector pair with Right Length Left-justified.
100
+ def : Pat<(v256i1(int_ppc_vsx_lxvprl addr:$RA, i64:$RB)), (LXVPRL $RA, $RB)>;
101
+ def : Pat<(v256i1(int_ppc_vsx_lxvprll addr:$RA, i64:$RB)), (LXVPRLL $RA, $RB)>;
101
102
def : Pat<(int_ppc_vsx_stxvprl v256i1:$XTp, addr:$RA, i64:$RB),
102
103
(STXVPRL $XTp, $RA, $RB)>;
103
104
def : Pat<(int_ppc_vsx_stxvprll v256i1:$XTp, addr:$RA, i64:$RB),
0 commit comments