@@ -1083,3 +1083,132 @@ define <2 x float> @signbits() {
10831083entry:
10841084 ret <2 x float > <float 0x36A0000000000000 , float 0 .000000e+00 >
10851085}
1086+
1087+ define <2 x half > @vid_v2f16 () {
1088+ ; CHECK-LABEL: vid_v2f16:
1089+ ; CHECK: # %bb.0:
1090+ ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
1091+ ; CHECK-NEXT: vid.v v8
1092+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1093+ ; CHECK-NEXT: ret
1094+ ret <2 x half > <half 0 .0 , half 1 .0 >
1095+ }
1096+
1097+ define <2 x half > @vid_addend1_v2f16 () {
1098+ ; CHECK-LABEL: vid_addend1_v2f16:
1099+ ; CHECK: # %bb.0:
1100+ ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
1101+ ; CHECK-NEXT: vid.v v8
1102+ ; CHECK-NEXT: vadd.vi v8, v8, 1
1103+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1104+ ; CHECK-NEXT: ret
1105+ ret <2 x half > <half 1 .0 , half 2 .0 >
1106+ }
1107+
1108+ define <2 x half > @vid_denominator2_v2f16 () {
1109+ ; CHECK-LABEL: vid_denominator2_v2f16:
1110+ ; CHECK: # %bb.0:
1111+ ; CHECK-NEXT: lui a0, %hi(.LCPI27_0)
1112+ ; CHECK-NEXT: addi a0, a0, %lo(.LCPI27_0)
1113+ ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
1114+ ; CHECK-NEXT: vle16.v v8, (a0)
1115+ ; CHECK-NEXT: ret
1116+ ret <2 x half > <half 0 .5 , half 1 .0 >
1117+ }
1118+
1119+ define <2 x half > @vid_step2_v2f16 () {
1120+ ; CHECK-LABEL: vid_step2_v2f16:
1121+ ; CHECK: # %bb.0:
1122+ ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
1123+ ; CHECK-NEXT: vid.v v8
1124+ ; CHECK-NEXT: vadd.vv v8, v8, v8
1125+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1126+ ; CHECK-NEXT: ret
1127+ ret <2 x half > <half 0 .0 , half 2 .0 >
1128+ }
1129+
1130+ define <2 x float > @vid_v2f32 () {
1131+ ; CHECK-LABEL: vid_v2f32:
1132+ ; CHECK: # %bb.0:
1133+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
1134+ ; CHECK-NEXT: vid.v v8
1135+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1136+ ; CHECK-NEXT: ret
1137+ ret <2 x float > <float 0 .0 , float 1 .0 >
1138+ }
1139+
1140+ define <2 x float > @vid_addend1_v2f32 () {
1141+ ; CHECK-LABEL: vid_addend1_v2f32:
1142+ ; CHECK: # %bb.0:
1143+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
1144+ ; CHECK-NEXT: vid.v v8
1145+ ; CHECK-NEXT: vadd.vi v8, v8, 1
1146+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1147+ ; CHECK-NEXT: ret
1148+ ret <2 x float > <float 1 .0 , float 2 .0 >
1149+ }
1150+
1151+ define <2 x float > @vid_denominator2_v2f32 () {
1152+ ; CHECK-LABEL: vid_denominator2_v2f32:
1153+ ; CHECK: # %bb.0:
1154+ ; CHECK-NEXT: lui a0, %hi(.LCPI31_0)
1155+ ; CHECK-NEXT: addi a0, a0, %lo(.LCPI31_0)
1156+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
1157+ ; CHECK-NEXT: vle32.v v8, (a0)
1158+ ; CHECK-NEXT: ret
1159+ ret <2 x float > <float 0 .5 , float 1 .0 >
1160+ }
1161+
1162+ define <2 x float > @vid_step2_v2f32 () {
1163+ ; CHECK-LABEL: vid_step2_v2f32:
1164+ ; CHECK: # %bb.0:
1165+ ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
1166+ ; CHECK-NEXT: vid.v v8
1167+ ; CHECK-NEXT: vadd.vv v8, v8, v8
1168+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1169+ ; CHECK-NEXT: ret
1170+ ret <2 x float > <float 0 .0 , float 2 .0 >
1171+ }
1172+
1173+ define <2 x double > @vid_v2f64 () {
1174+ ; CHECK-LABEL: vid_v2f64:
1175+ ; CHECK: # %bb.0:
1176+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1177+ ; CHECK-NEXT: vid.v v8
1178+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1179+ ; CHECK-NEXT: ret
1180+ ret <2 x double > <double 0 .0 , double 1 .0 >
1181+ }
1182+
1183+ define <2 x double > @vid_addend1_v2f64 () {
1184+ ; CHECK-LABEL: vid_addend1_v2f64:
1185+ ; CHECK: # %bb.0:
1186+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1187+ ; CHECK-NEXT: vid.v v8
1188+ ; CHECK-NEXT: vadd.vi v8, v8, 1
1189+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1190+ ; CHECK-NEXT: ret
1191+ ret <2 x double > <double 1 .0 , double 2 .0 >
1192+ }
1193+
1194+ define <2 x double > @vid_denominator2_v2f64 () {
1195+ ; CHECK-LABEL: vid_denominator2_v2f64:
1196+ ; CHECK: # %bb.0:
1197+ ; CHECK-NEXT: lui a0, %hi(.LCPI35_0)
1198+ ; CHECK-NEXT: addi a0, a0, %lo(.LCPI35_0)
1199+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1200+ ; CHECK-NEXT: vle64.v v8, (a0)
1201+ ; CHECK-NEXT: ret
1202+ ret <2 x double > <double 0 .5 , double 1 .0 >
1203+ }
1204+
1205+ define <2 x double > @vid_step2_v2f64 () {
1206+ ; CHECK-LABEL: vid_step2_v2f64:
1207+ ; CHECK: # %bb.0:
1208+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1209+ ; CHECK-NEXT: vid.v v8
1210+ ; CHECK-NEXT: vadd.vv v8, v8, v8
1211+ ; CHECK-NEXT: vfcvt.f.x.v v8, v8
1212+ ; CHECK-NEXT: ret
1213+ ret <2 x double > <double 0 .0 , double 2 .0 >
1214+ }
0 commit comments