Skip to content

Commit 05da160

Browse files
authored
[X86] Add assembly comment for VMOVSH instructions (#156848)
Matches existing MOVSD/S implementations
1 parent b400fd1 commit 05da160

File tree

5 files changed

+24
-17
lines changed

5 files changed

+24
-17
lines changed

llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,6 +1668,13 @@ bool llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
16681668
DestName = getRegName(MI->getOperand(0).getReg());
16691669
break;
16701670

1671+
case X86::VMOVSHZrr:
1672+
Src2Name = getRegName(MI->getOperand(2).getReg());
1673+
Src1Name = getRegName(MI->getOperand(1).getReg());
1674+
DecodeScalarMoveMask(8, false, ShuffleMask);
1675+
DestName = getRegName(MI->getOperand(0).getReg());
1676+
break;
1677+
16711678
case X86::MOVPQI2QIrr:
16721679
case X86::MOVZPQILo2PQIrr:
16731680
case X86::VMOVPQI2QIrr:

llvm/test/CodeGen/X86/avx512fp16-fold-load-binops.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define <8 x half> @minsh(<8 x half> %va, ptr %pb) {
5757
; CHECK-LABEL: minsh:
5858
; CHECK: # %bb.0:
5959
; CHECK-NEXT: vminsh (%rdi), %xmm0, %xmm1
60-
; CHECK-NEXT: vmovsh %xmm1, %xmm0, %xmm0
60+
; CHECK-NEXT: vmovsh {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]
6161
; CHECK-NEXT: retq
6262
%a = extractelement <8 x half> %va, i32 0
6363
%b = load half, ptr %pb
@@ -70,7 +70,7 @@ define <8 x half> @maxsh(<8 x half> %va, ptr %pb) {
7070
; CHECK-LABEL: maxsh:
7171
; CHECK: # %bb.0:
7272
; CHECK-NEXT: vminsh (%rdi), %xmm0, %xmm1
73-
; CHECK-NEXT: vmovsh %xmm1, %xmm0, %xmm0
73+
; CHECK-NEXT: vmovsh {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]
7474
; CHECK-NEXT: retq
7575
%a = extractelement <8 x half> %va, i32 0
7676
%b = load half, ptr %pb

llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1369,7 +1369,7 @@ define <8 x half> @PR153570(ptr %p) {
13691369
; CHECK-NEXT: vpbroadcastw {{.*#+}} xmm1 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
13701370
; CHECK-NEXT: vmulsh {rn-sae}, %xmm0, %xmm1, %xmm0
13711371
; CHECK-NEXT: vpbroadcastw {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
1372-
; CHECK-NEXT: vmovsh %xmm2, %xmm1, %xmm1
1372+
; CHECK-NEXT: vmovsh {{.*#+}} xmm1 = xmm2[0],xmm1[1,2,3,4,5,6,7]
13731373
; CHECK-NEXT: vmovaps %xmm1, (%rdi)
13741374
; CHECK-NEXT: retq
13751375
%r = tail call <8 x half> @llvm.x86.avx512fp16.mask.mul.sh.round(<8 x half> <half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00>, <8 x half> <half 0xH4000, half 0xH4000, half 0xH4000, half 0xH4000, half 0xH4000, half 0xH4000, half 0xH4000, half 0xH4000>, <8 x half> <half 0xH8000, half 0xH8000, half 0xH8000, half 0xH8000, half 0xH8000, half 0xH8000, half 0xH8000, half 0xH8000>, i8 0, i32 8)

llvm/test/CodeGen/X86/avx512fp16-mov.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ define <8 x half> @test14(half %x) {
303303
; X64-LABEL: test14:
304304
; X64: # %bb.0:
305305
; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
306-
; X64-NEXT: vmovsh %xmm0, %xmm1, %xmm0
306+
; X64-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
307307
; X64-NEXT: retq
308308
;
309309
; X86-LABEL: test14:
@@ -318,7 +318,7 @@ define <16 x half> @test14b(half %x) {
318318
; X64VL-LABEL: test14b:
319319
; X64VL: # %bb.0:
320320
; X64VL-NEXT: vxorps %xmm1, %xmm1, %xmm1
321-
; X64VL-NEXT: vmovsh %xmm0, %xmm1, %xmm0
321+
; X64VL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
322322
; X64VL-NEXT: retq
323323
;
324324
; X86-LABEL: test14b:
@@ -329,7 +329,7 @@ define <16 x half> @test14b(half %x) {
329329
; X64-NOVL-LABEL: test14b:
330330
; X64-NOVL: # %bb.0:
331331
; X64-NOVL-NEXT: vxorps %xmm1, %xmm1, %xmm1
332-
; X64-NOVL-NEXT: vmovsh %xmm0, %xmm1, %xmm0
332+
; X64-NOVL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
333333
; X64-NOVL-NEXT: vxorps %xmm1, %xmm1, %xmm1
334334
; X64-NOVL-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
335335
; X64-NOVL-NEXT: retq
@@ -341,7 +341,7 @@ define <32 x half> @test14c(half %x) {
341341
; X64VL-LABEL: test14c:
342342
; X64VL: # %bb.0:
343343
; X64VL-NEXT: vxorps %xmm1, %xmm1, %xmm1
344-
; X64VL-NEXT: vmovsh %xmm0, %xmm1, %xmm0
344+
; X64VL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
345345
; X64VL-NEXT: retq
346346
;
347347
; X86-LABEL: test14c:
@@ -352,7 +352,7 @@ define <32 x half> @test14c(half %x) {
352352
; X64-NOVL-LABEL: test14c:
353353
; X64-NOVL: # %bb.0:
354354
; X64-NOVL-NEXT: vxorps %xmm1, %xmm1, %xmm1
355-
; X64-NOVL-NEXT: vmovsh %xmm0, %xmm1, %xmm0
355+
; X64-NOVL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
356356
; X64-NOVL-NEXT: vxorps %xmm1, %xmm1, %xmm1
357357
; X64-NOVL-NEXT: vinsertf32x4 $0, %xmm0, %zmm1, %zmm0
358358
; X64-NOVL-NEXT: retq
@@ -1464,21 +1464,21 @@ define <8 x half> @movsh(<8 x half> %a, <8 x half> %b) {
14641464
; X64VL-LABEL: movsh:
14651465
; X64VL: # %bb.0:
14661466
; X64VL-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,14,15,0,1,2,3,4,5,6,7,14,15,10,11]
1467-
; X64VL-NEXT: vmovsh %xmm0, %xmm1, %xmm0
1467+
; X64VL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
14681468
; X64VL-NEXT: vaddph %xmm0, %xmm2, %xmm0
14691469
; X64VL-NEXT: retq
14701470
;
14711471
; X86-LABEL: movsh:
14721472
; X86: # %bb.0:
14731473
; X86-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,14,15,0,1,2,3,4,5,6,7,14,15,10,11]
1474-
; X86-NEXT: vmovsh %xmm0, %xmm1, %xmm0
1474+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
14751475
; X86-NEXT: vaddph %xmm0, %xmm2, %xmm0
14761476
; X86-NEXT: retl
14771477
;
14781478
; X64-NOVL-LABEL: movsh:
14791479
; X64-NOVL: # %bb.0:
14801480
; X64-NOVL-NEXT: vpshufb {{.*#+}} xmm2 = xmm0[0,1,14,15,0,1,2,3,4,5,6,7,14,15,10,11]
1481-
; X64-NOVL-NEXT: vmovsh %xmm0, %xmm1, %xmm3
1481+
; X64-NOVL-NEXT: vmovsh {{.*#+}} xmm3 = xmm0[0],xmm1[1,2,3,4,5,6,7]
14821482
; X64-NOVL-NEXT: vpsrldq {{.*#+}} xmm4 = xmm3[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
14831483
; X64-NOVL-NEXT: vpsrldq {{.*#+}} xmm5 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
14841484
; X64-NOVL-NEXT: vaddsh %xmm4, %xmm5, %xmm4
@@ -2311,7 +2311,7 @@ define <8 x half> @test21(half %a, half %b, half %c) nounwind {
23112311
; X64-LABEL: test21:
23122312
; X64: # %bb.0:
23132313
; X64-NEXT: vxorps %xmm3, %xmm3, %xmm3
2314-
; X64-NEXT: vmovsh %xmm2, %xmm3, %xmm2
2314+
; X64-NEXT: vmovsh {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3,4,5,6,7]
23152315
; X64-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
23162316
; X64-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0],xmm2[0],zero,zero
23172317
; X64-NEXT: retq
@@ -2427,7 +2427,7 @@ define <16 x i32> @pr52561(<16 x i32> %a, <16 x i32> %b) "min-legal-vector-width
24272427
; X64VL-NEXT: vpaddd %ymm2, %ymm1, %ymm1
24282428
; X64VL-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
24292429
; X64VL-NEXT: vpxor %xmm2, %xmm2, %xmm2
2430-
; X64VL-NEXT: vmovsh %xmm0, %xmm2, %xmm0
2430+
; X64VL-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm2[1,2,3,4,5,6,7]
24312431
; X64VL-NEXT: retq
24322432
;
24332433
; X86-LABEL: pr52561:
@@ -2443,7 +2443,7 @@ define <16 x i32> @pr52561(<16 x i32> %a, <16 x i32> %b) "min-legal-vector-width
24432443
; X86-NEXT: vpaddd %ymm2, %ymm1, %ymm1
24442444
; X86-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %ymm1, %ymm1
24452445
; X86-NEXT: vpxor %xmm2, %xmm2, %xmm2
2446-
; X86-NEXT: vmovsh %xmm0, %xmm2, %xmm0
2446+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm2[1,2,3,4,5,6,7]
24472447
; X86-NEXT: movl %ebp, %esp
24482448
; X86-NEXT: popl %ebp
24492449
; X86-NEXT: retl
@@ -2474,7 +2474,7 @@ define <8 x i16> @pr59628_xmm(i16 %arg) {
24742474
; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
24752475
; X86-NEXT: vxorps %xmm0, %xmm0, %xmm0
24762476
; X86-NEXT: vpbroadcastw %eax, %xmm1
2477-
; X86-NEXT: vmovsh %xmm1, %xmm0, %xmm0
2477+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5,6,7]
24782478
; X86-NEXT: vpcmpneqw {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1, %k1
24792479
; X86-NEXT: vmovdqu16 %xmm0, %xmm0 {%k1} {z}
24802480
; X86-NEXT: retl

llvm/test/CodeGen/X86/vec-strict-128-fp16.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ define <8 x half> @f11(<2 x double> %a0, <8 x half> %a1) #0 {
7979
; CHECK-LABEL: f11:
8080
; CHECK: # %bb.0:
8181
; CHECK-NEXT: vcvtsd2sh %xmm0, %xmm0, %xmm0
82-
; CHECK-NEXT: vmovsh %xmm0, %xmm1, %xmm0
82+
; CHECK-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
8383
; CHECK-NEXT: ret{{[l|q]}}
8484
%ext = extractelement <2 x double> %a0, i32 0
8585
%cvt = call half @llvm.experimental.constrained.fptrunc.f16.f64(double %ext,
@@ -140,7 +140,7 @@ define <8 x half> @f17(<4 x float> %a0, <8 x half> %a1) #0 {
140140
; CHECK-LABEL: f17:
141141
; CHECK: # %bb.0:
142142
; CHECK-NEXT: vcvtss2sh %xmm0, %xmm0, %xmm0
143-
; CHECK-NEXT: vmovsh %xmm0, %xmm1, %xmm0
143+
; CHECK-NEXT: vmovsh {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
144144
; CHECK-NEXT: ret{{[l|q]}}
145145
%ext = extractelement <4 x float> %a0, i32 0
146146
%cvt = call half @llvm.experimental.constrained.fptrunc.f16.f32(float %ext,

0 commit comments

Comments
 (0)