[llvm] r346384 - [WebAssembly] Add V128 to WebAssemblyInstrInfo::copyPhysReg

Thomas Lively via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 7 18:35:28 PST 2018


Author: tlively
Date: Wed Nov  7 18:35:28 2018
New Revision: 346384

URL: http://llvm.org/viewvc/llvm-project?rev=346384&view=rev
Log:
[WebAssembly] Add V128 to WebAssemblyInstrInfo::copyPhysReg

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D53872

Added:
    llvm/trunk/test/CodeGen/WebAssembly/regcopy.mir
Modified:
    llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp

Modified: llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp?rev=346384&r1=346383&r2=346384&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp Wed Nov  7 18:35:28 2018
@@ -70,6 +70,8 @@ void WebAssemblyInstrInfo::copyPhysReg(M
     CopyOpcode = WebAssembly::COPY_F32;
   else if (RC == &WebAssembly::F64RegClass)
     CopyOpcode = WebAssembly::COPY_F64;
+  else if (RC == &WebAssembly::V128RegClass)
+    CopyOpcode = WebAssembly::COPY_V128;
   else
     llvm_unreachable("Unexpected register class");
 

Added: llvm/trunk/test/CodeGen/WebAssembly/regcopy.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/WebAssembly/regcopy.mir?rev=346384&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/regcopy.mir (added)
+++ llvm/trunk/test/CodeGen/WebAssembly/regcopy.mir Wed Nov  7 18:35:28 2018
@@ -0,0 +1,80 @@
+# RUN: llc %s -o - -run-pass=postrapseudos | FileCheck %s
+--- |
+  target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
+  target triple = "wasm32-unknown-unknown"
+
+  define void @copy_i32() {
+    ret void
+  }
+
+  define void @copy_i64() {
+    ret void
+  }
+
+  define void @copy_f32() {
+    ret void
+  }
+
+  define void @copy_f64() {
+    ret void
+  }
+
+  define void @copy_v128() {
+    ret void
+  }
+...
+---
+name: copy_i32
+# CHECK-LABEL: copy_i32
+body:             |
+  ; CHECK-LABEL: bb.0:
+  ; CHECK-NEXT: %0:i32 = COPY_I32 %1:i32
+  ; CHECK-NEXT: RETURN_VOID
+  bb.0:
+    %0:i32 = COPY %1:i32
+    RETURN_VOID implicit-def $arguments
+...
+---
+name: copy_i64
+# CHECK-LABEL: copy_i64
+body:             |
+  ; CHECK-LABEL: bb.0:
+  ; CHECK-NEXT: %0:i64 = COPY_I64 %1:i64
+  ; CHECK-NEXT: RETURN_VOID
+  bb.0:
+    %0:i64 = COPY %1:i64
+    RETURN_VOID implicit-def $arguments
+...
+---
+name: copy_f32
+# CHECK-LABEL: copy_f32
+body:             |
+  ; CHECK-LABEL: bb.0:
+  ; CHECK-NEXT: %0:f32 = COPY_F32 %1:f32
+  ; CHECK-NEXT: RETURN_VOID
+  bb.0:
+    %0:f32 = COPY %1:f32
+    RETURN_VOID implicit-def $arguments
+...
+---
+name: copy_f64
+# CHECK-LABEL: copy_f64
+body:             |
+  ; CHECK-LABEL: bb.0:
+  ; CHECK-NEXT: %0:f64 = COPY_F64 %1:f64
+  ; CHECK-NEXT: RETURN_VOID
+  bb.0:
+    %0:f64 = COPY %1:f64
+    RETURN_VOID implicit-def $arguments
+...
+---
+name: copy_v128
+# CHECK-LABEL: copy_v128
+body:             |
+  ; CHECK-LABEL: bb.0:
+  ; CHECK-NEXT: %0:v128 = COPY_V128 %1:v128
+  ; CHECK-NEXT: RETURN_VOID
+  bb.0:
+    %0:v128 = COPY %1:v128
+    RETURN_VOID implicit-def $arguments
+...




More information about the llvm-commits mailing list