diff test/CodeGen/WebAssembly/load-store-i1.ll @ 100:7d135dc70f03

LLVM 3.9
author Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp>
date Tue, 26 Jan 2016 22:53:40 +0900
parents afa8332a0e37
children 1172e4bd9c6f
line wrap: on
line diff
--- a/test/CodeGen/WebAssembly/load-store-i1.ll	Tue Oct 13 17:49:56 2015 +0900
+++ b/test/CodeGen/WebAssembly/load-store-i1.ll	Tue Jan 26 22:53:40 2016 +0900
@@ -2,13 +2,12 @@
 
 ; Test that i1 extending loads and truncating stores are assembled properly.
 
-target datalayout = "e-p:32:32-i64:64-n32:64-S128"
+target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
 target triple = "wasm32-unknown-unknown"
 
 ; CHECK-LABEL: load_u_i1_i32:
-; CHECK:      load_u_i8_i32 @1{{$}}
-; CHECK-NEXT: set_local @2, pop{{$}}
-; CHECK-NEXT: return @2{{$}}
+; CHECK:      i32.load8_u $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: return $pop[[NUM0]]{{$}}
 define i32 @load_u_i1_i32(i1* %p) {
   %v = load i1, i1* %p
   %e = zext i1 %v to i32
@@ -16,15 +15,12 @@
 }
 
 ; CHECK-LABEL: load_s_i1_i32:
-; CHECK:      load_u_i8_i32 @1{{$}}
-; CHECK-NEXT: set_local @2, pop{{$}}
-; CHECK-NEXT: i32.const 31{{$}}
-; CHECK-NEXT: set_local @3, pop{{$}}
-; CHECK-NEXT: shl @2, @3{{$}}
-; CHECK-NEXT: set_local @4, pop{{$}}
-; CHECK-NEXT: shr_s @4, @3{{$}}
-; CHECK-NEXT: set_local @5, pop{{$}}
-; CHECK-NEXT: return @5{{$}}
+; CHECK:      i32.load8_u $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: i32.const $push[[NUM1:[0-9]+]]=, 31{{$}}
+; CHECK-NEXT: shl $push[[NUM2:[0-9]+]]=, $pop[[NUM0]], $pop[[NUM1]]{{$}}
+; CHECK-NEXT: i32.const $push[[NUM4:[0-9]+]]=, 31{{$}}
+; CHECK-NEXT: shr_s $push[[NUM3:[0-9]+]]=, $pop[[NUM2]], $pop[[NUM4]]{{$}}
+; CHECK-NEXT: return $pop[[NUM3]]{{$}}
 define i32 @load_s_i1_i32(i1* %p) {
   %v = load i1, i1* %p
   %e = sext i1 %v to i32
@@ -32,9 +28,8 @@
 }
 
 ; CHECK-LABEL: load_u_i1_i64:
-; CHECK:      load_u_i8_i64 @1{{$}}
-; CHECK-NEXT: set_local @2, pop{{$}}
-; CHECK-NEXT: return @2{{$}}
+; CHECK:      i64.load8_u $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: return $pop[[NUM0]]{{$}}
 define i64 @load_u_i1_i64(i1* %p) {
   %v = load i1, i1* %p
   %e = zext i1 %v to i64
@@ -42,15 +37,12 @@
 }
 
 ; CHECK-LABEL: load_s_i1_i64:
-; CHECK:      load_u_i8_i64 @1{{$}}
-; CHECK-NEXT: set_local @2, pop{{$}}
-; CHECK-NEXT: i64.const 63{{$}}
-; CHECK-NEXT: set_local @3, pop{{$}}
-; CHECK-NEXT: shl @2, @3{{$}}
-; CHECK-NEXT: set_local @4, pop{{$}}
-; CHECK-NEXT: shr_s @4, @3{{$}}
-; CHECK-NEXT: set_local @5, pop{{$}}
-; CHECK-NEXT: return @5{{$}}
+; CHECK:      i64.load8_u $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: i64.const $push[[NUM1:[0-9]+]]=, 63{{$}}
+; CHECK-NEXT: shl $push[[NUM2:[0-9]+]]=, $pop[[NUM0]], $pop[[NUM1]]{{$}}
+; CHECK-NEXT: i64.const $push[[NUM4:[0-9]+]]=, 63{{$}}
+; CHECK-NEXT: shr_s $push[[NUM3:[0-9]+]]=, $pop[[NUM2]], $pop[[NUM4]]{{$}}
+; CHECK-NEXT: return $pop[[NUM3]]{{$}}
 define i64 @load_s_i1_i64(i1* %p) {
   %v = load i1, i1* %p
   %e = sext i1 %v to i64
@@ -58,11 +50,9 @@
 }
 
 ; CHECK-LABEL: store_i32_i1:
-; CHECK:      i32.const 1{{$}}
-; CHECK-NEXT: set_local @4, pop{{$}}
-; CHECK-NEXT: and @3, @4{{$}}
-; CHECK-NEXT: set_local @5, pop{{$}}
-; CHECK-NEXT: store_i8 @2, @5{{$}}
+; CHECK:      i32.const $push[[NUM0:[0-9]+]]=, 1{{$}}
+; CHECK-NEXT: i32.and $push[[NUM1:[0-9]+]]=, $1, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: i32.store8 $discard=, 0($0), $pop[[NUM1]]{{$}}
 define void @store_i32_i1(i1* %p, i32 %v) {
   %t = trunc i32 %v to i1
   store i1 %t, i1* %p
@@ -70,11 +60,9 @@
 }
 
 ; CHECK-LABEL: store_i64_i1:
-; CHECK:      i64.const 1{{$}}
-; CHECK-NEXT: set_local @4, pop{{$}}
-; CHECK-NEXT: and @3, @4{{$}}
-; CHECK-NEXT: set_local @5, pop{{$}}
-; CHECK-NEXT: store_i8 @2, @5{{$}}
+; CHECK:      i64.const $push[[NUM0:[0-9]+]]=, 1{{$}}
+; CHECK-NEXT: i64.and $push[[NUM1:[0-9]+]]=, $1, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: i64.store8 $discard=, 0($0), $pop[[NUM1]]{{$}}
 define void @store_i64_i1(i1* %p, i64 %v) {
   %t = trunc i64 %v to i1
   store i1 %t, i1* %p