Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: test/Transforms/NaCl/replace-ptrs-with-ints.ll

Issue 321733002: PNaCl SIMD: allow element-aligned vector load/store (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: s/,/./ Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/Transforms/NaCl/fix-vector-load-store-alignment.ll ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; RUN: opt %s -replace-ptrs-with-ints -S | FileCheck %s 1 ; RUN: opt %s -replace-ptrs-with-ints -S | FileCheck %s
2 2
3 target datalayout = "p:32:32:32" 3 target datalayout = "p:32:32:32"
4 4
5 5
6 %struct = type { i32, i32 } 6 %struct = type { i32, i32 }
7 7
8 declare %struct* @addr_taken_func(%struct*) 8 declare %struct* @addr_taken_func(%struct*)
9 9
10 @addr_of_func = global %struct* (%struct*)* @addr_taken_func 10 @addr_of_func = global %struct* (%struct*)* @addr_taken_func
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 %val = load i16* %ptr 338 %val = load i16* %ptr
339 ret i16 %val 339 ret i16 %val
340 } 340 }
341 ; CHECK: define i16 @load_global_bitcast() { 341 ; CHECK: define i16 @load_global_bitcast() {
342 ; CHECK-NEXT: %var.bc = bitcast i32* @var to i16* 342 ; CHECK-NEXT: %var.bc = bitcast i32* @var to i16*
343 ; CHECK-NEXT: %val = load i16* %var.bc 343 ; CHECK-NEXT: %val = load i16* %var.bc
344 ; CHECK-NEXT: ret i16 %val 344 ; CHECK-NEXT: ret i16 %val
345 345
346 346
347 declare void @receive_alloca(%struct* %ptr) 347 declare void @receive_alloca(%struct* %ptr)
348 declare void @receive_vector_alloca(<4 x i32>* %ptr)
348 349
349 define void @alloca_fixed() { 350 define void @alloca_fixed() {
350 %buf = alloca %struct, align 128 351 %buf = alloca %struct, align 128
351 call void @receive_alloca(%struct* %buf) 352 call void @receive_alloca(%struct* %buf)
352 ret void 353 ret void
353 } 354 }
354 ; CHECK: define void @alloca_fixed() { 355 ; CHECK: define void @alloca_fixed() {
355 ; CHECK-NEXT: %buf = alloca i8, i32 8, align 128 356 ; CHECK-NEXT: %buf = alloca i8, i32 8, align 128
356 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32 357 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32
357 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint) 358 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint)
358 359
359 ; When the size passed to alloca is a constant, it should be a 360 ; When the size passed to alloca is a constant, it should be a
360 ; constant in the output too. 361 ; constant in the output too.
361 define void @alloca_fixed_array() { 362 define void @alloca_fixed_array() {
362 %buf = alloca %struct, i32 100 363 %buf = alloca %struct, i32 100
363 call void @receive_alloca(%struct* %buf) 364 call void @receive_alloca(%struct* %buf)
364 ret void 365 ret void
365 } 366 }
366 ; CHECK: define void @alloca_fixed_array() { 367 ; CHECK: define void @alloca_fixed_array() {
367 ; CHECK-NEXT: %buf = alloca i8, i32 800, align 8 368 ; CHECK-NEXT: %buf = alloca i8, i32 800, align 8
368 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32 369 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32
369 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint) 370 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint)
370 371
372 define void @alloca_fixed_vector() {
373 %buf = alloca <4 x i32>, align 128
374 call void @receive_vector_alloca(<4 x i32>* %buf)
375 ret void
376 }
377 ; CHECK: define void @alloca_fixed_vector() {
378 ; CHECK-NEXT: %buf = alloca i8, i32 16, align 128
379 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32
380 ; CHECK-NEXT: call void @receive_vector_alloca(i32 %buf.asint)
381
371 define void @alloca_variable(i32 %size) { 382 define void @alloca_variable(i32 %size) {
372 %buf = alloca %struct, i32 %size 383 %buf = alloca %struct, i32 %size
373 call void @receive_alloca(%struct* %buf) 384 call void @receive_alloca(%struct* %buf)
374 ret void 385 ret void
375 } 386 }
376 ; CHECK: define void @alloca_variable(i32 %size) { 387 ; CHECK: define void @alloca_variable(i32 %size) {
377 ; CHECK-NEXT: %buf.alloca_mul = mul i32 8, %size 388 ; CHECK-NEXT: %buf.alloca_mul = mul i32 8, %size
378 ; CHECK-NEXT: %buf = alloca i8, i32 %buf.alloca_mul 389 ; CHECK-NEXT: %buf = alloca i8, i32 %buf.alloca_mul
379 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32 390 ; CHECK-NEXT: %buf.asint = ptrtoint i8* %buf to i32
380 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint) 391 ; CHECK-NEXT: call void @receive_alloca(i32 %buf.asint)
381 392
382 define void @alloca_alignment_i32() { 393 define void @alloca_alignment_i32() {
383 %buf = alloca i32 394 %buf = alloca i32
384 ret void 395 ret void
385 } 396 }
386 ; CHECK: void @alloca_alignment_i32() { 397 ; CHECK: void @alloca_alignment_i32() {
387 ; CHECK-NEXT: alloca i8, i32 4, align 4 398 ; CHECK-NEXT: alloca i8, i32 4, align 4
388 399
389 define void @alloca_alignment_double() { 400 define void @alloca_alignment_double() {
390 %buf = alloca double 401 %buf = alloca double
391 ret void 402 ret void
392 } 403 }
393 ; CHECK: void @alloca_alignment_double() { 404 ; CHECK: void @alloca_alignment_double() {
394 ; CHECK-NEXT: alloca i8, i32 8, align 8 405 ; CHECK-NEXT: alloca i8, i32 8, align 8
395 406
407 define void @alloca_alignment_vector() {
408 %buf = alloca <4 x i32>
409 ret void
410 }
411 ; CHECK: void @alloca_alignment_vector() {
412 ; CHECK-NEXT: alloca i8, i32 16, align 16
413
396 define void @alloca_lower_alignment() { 414 define void @alloca_lower_alignment() {
397 %buf = alloca i32, align 1 415 %buf = alloca i32, align 1
398 ret void 416 ret void
399 } 417 }
400 ; CHECK: void @alloca_lower_alignment() { 418 ; CHECK: void @alloca_lower_alignment() {
401 ; CHECK-NEXT: alloca i8, i32 4, align 1 419 ; CHECK-NEXT: alloca i8, i32 4, align 1
402 420
403 421
404 ; This tests for a bug in which, when processing the store's %buf2 422 ; This tests for a bug in which, when processing the store's %buf2
405 ; operand, ReplacePtrsWithInts accidentally strips off the ptrtoint 423 ; operand, ReplacePtrsWithInts accidentally strips off the ptrtoint
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 %bc = bitcast i32* @typeid to i8* 655 %bc = bitcast i32* @typeid to i8*
638 call i32 @llvm.eh.typeid.for(i8* %bc) 656 call i32 @llvm.eh.typeid.for(i8* %bc)
639 ret void 657 ret void
640 } 658 }
641 ; CHECK: define void @typeid_for() { 659 ; CHECK: define void @typeid_for() {
642 ; CHECK-NEXT: %typeid.bc = bitcast i32* @typeid to i8* 660 ; CHECK-NEXT: %typeid.bc = bitcast i32* @typeid to i8*
643 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc) 661 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc)
644 662
645 663
646 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind } 664 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind }
OLDNEW
« no previous file with comments | « test/Transforms/NaCl/fix-vector-load-store-alignment.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698